glBlendFunc(...) wird nicht in der Liste gespeichert
-
Hallo,
ich habe da ein Problem mit OpenGL. Ich erzeuge eine Liste die, die Ausgabe einer Textur und die dazugehörige Änderung von Blending erledigen soll. Die Textur wird beim aufrufen von der Liste ausgegeben aber ohne dem Blending. Wenn ich aber die Art von Blending vor dem Aufruf der Liste angebe funktioniert es wunder bar.Hier ein Codeausschnitt:
// zum Erstellen der Liste glNewList(liste,GL_COMPILE); glBegin(GL_QUADS); glColor3f(1.0f,1.0f,1.0f); // Maske glBlendFunc(GL_SRC_COLOR, GL_ONE); // wird hier ignoriert glTexCoord2f(0,0.5); glVertex2f(-ursprung.x*tex->width, -ursprung.y*tex->height); // oben links glTexCoord2f(1,0.5); glVertex2f((1-ursprung.x)*tex->width, -ursprung.y*tex->height); // oben rechts glTexCoord2f(1,1); glVertex2f((1-ursprung.x)*tex->width, (1-ursprung.y)*tex->height); // unten rechts glTexCoord2f(0,1); glVertex2f(-ursprung.x*tex->width, (1-ursprung.y)*tex->height); // unten links // Textur /* ... */ glEnd(); glEndList(); ... glBlendFunc(GL_SRC_COLOR, GL_ONE); // jetzt funktioniert es glCallList(liste);Bin für jeden Tipp dankbar!
mfg.
-
Ich nehme mal an, dass Renderstates nicht in Displaylisten gespeichert werden?
-
Kann auch ein Treiber Bug sein. Probier es mal mit einer anderen Karte aus wenn du kannst. Die GL Treiber von ATI z.B. sind nicht gerade das was man "fehlerfrei" nennt. Die von nVidia auch nicht (aber nicht so ü-bel wie die ATI Teile).
Und warum verwendest du ne display list? Sollte mittlerweile ziemlich für'n Hugo sein wenn man eben die entsprechenden extensions verwendet...
-
du musst das blending lediglich ausserhalb des begin-end-blocks setzen.
-
hustbaer schrieb:
Und warum verwendest du ne display list? Sollte mittlerweile ziemlich für'n Hugo sein wenn man eben die entsprechenden extensions verwendet...
Welche Extensions?
-
du musst das blending lediglich ausserhalb des begin-end-blocks setzen.
Vielen Dank, das währe mir nicht eingefallen!
Und warum verwendest du ne display list? Sollte mittlerweile ziemlich für'n Hugo sein wenn man eben die entsprechenden extensions verwendet...
Ich verstehe leider auch nicht was du damit meinst.
mfg.
-
Naja, extensions halt. ARB_vertex_buffer_object z.B.
Klar kann man damit keine state changes "abspeichern" ala display list, aber display lists mit glTexCoord zu verwenden... weiss nicht.