Anfängerfragen zu OpenGL mit VCL-C++



  • Hi zusammen

    Also, ich pushe ein Matrix mit glPushMatrix() und zeichne dann mit glBegin(GL_POINTS) und glEnd().
    Wenn ich dort dazwischen glColor4d(127/255, 63/255, 191/255, 25/100) und dann die Position angebe, sollte es doch 25% durchsichtig sein, oder? Bei mir ist es aber 0% durchsichtig! Wieso aber?

    MfG,
    X.DarkForce.X

    PS: Achja, wie kann ich alles gezeichnete Kantenglätten (Anti-Aliasing)?



  • Du musst Alphablending aktivieren. Falls das da oben direkt aus deinem Code stammt so seist du auch drauf hingewiesen dass 25/100 eine Integerdivision ist die als Ergebnis 0 liefert.
    Was Antialiasing angeht google einfach mal nach Multisampling und OpenGL...



  • 25/100=0
    25.0/100=0.25
    25/100.0=0.25

    Vielleicht soltlest du erstmal die Sprache lernen, bevor du mit OpenGL beginnst...



  • Das war doch nur Schematisch...
    Im echten Code nutze ich float-Variabeln. Er kompiliert und hat immernoch kein Alpha...



  • Das war doch nur Schematisch...
    Im echten Code nutze ich float-Variabeln. Er kompiliert und hat immernoch kein Alpha...



  • dann zeig doch mal echten Code. Falschen Code zeigen um Hilfe zu kriegen ist irgendwie nicht sehr intelligent, oder?



  • Hier der Code:

    glShadeModel(GL_SMOOTH);
    
                glPushMatrix ();
    
                        glBegin (GL_QUADS);
    
                                  glColor3d(237.0l/255.0l, 28.0l/255.0l, 36.0l/255.0l);
                                  glVertex2d( 1.0l,  1.0l);
                                  glVertex2d( 1.0l, -1.0l);
                                  glVertex2d(-1.0l, -1.0l);
                                  glVertex2d(-1.0l,  1.0l);
    
                        glEnd ();
                        glBegin (GL_TRINAGLES);
    
                                  glColor3d(237.0l/255.0l, 28.0l/255.0l, 36.0l/255.0l);
                                  glVertex2d(-1.0l,  1.0l);
                                  glColor4d(34.0l/255.0l, 177.0l/255.0l, 76.0l/255.0l, 66.67l/100.0l);
                                  glVertex2d( 1.0l,  1.0l);
                                  glColor3d(237.0l/255.0l, 28.0l/255.0l, 36.0l/255.0l);
                                  glVertex2d( 1.0l, -1.0l);
    
                        glEnd ();
                        glBegin (GL_QUADS);
    
                                  glColor4d(0.0l/255.0l, 183.0l/255.0l, 239.0l/255.0l, 25.0l/100.0l);
                                  glVertex2d( 1.0l,  1.0l);
                                  glColor3d(0.0l/255.0l, 183.0l/255.0l, 239.0l/255.0l);
                                  glVertex2d( 1.0l, -1.0l);
                                  glVertex2d(-1.0l, -1.0l);
                                  glVertex2d(-1.0l,  1.0l);
    
                        glEnd ();
    
                glPopMatrix ();
    

    Er spuckt nur eine blaue Fläche aus. Doch er sollte aber eine blaue Fläche mit einem Rot-Grün-Verlauf obenrechts ausgeben.

    Edit: habe die Variabeln durch ihre erwartete Werte ersetzt...



  • dot schrieb:

    Du musst Alphablending aktivieren.



  • Und wie geht das?
    (Sorry, bin absolut neu hier)





  • Also das wegen dem alpha habe ich gefunden...
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    Kann mir jemand mit dem Kantenglätten helfen?
    Ich habe es schon gesucht, aber nix gefunden...




Log in to reply