Ich habe mir gerade mal wieder die Finger wund gesucht und sehe das Forum nun als letzten Ausweg. Ich habe mir eine PNG Textur erstellt, die einen Alpha-Kanal enthält, der nicht nur 0 oder 1 beinhaltet sondern ebend auch 0.01 ... 1.00 nur leider habe ich damit keinen Erfolg beim rendern. Bzw. es wird transparent, allerdings mit Treppchen, da mein Programm alle Pixel knallhart zeichnet die einen Alpha-Kanal Wert haben der größer 0 ist. Was aus folgendem Code ja auch abzuleiten ist:
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich persönlich kann mir nicht vorstellen was du da gerade mit Treppchen meinst. Mach bei so etwas lieber immer ein Bild und hänge das gleich mit an. Lieber zu viel Informationen als zu wenig.
Ob deine Textur nun ein TGA, BMP oder PNG ist spielt für OpenGL keine Rolle. Denn in deinem Falle übergibst du die Texturdaten sowieso unkomprimiert. Wichtig ist da nur ob in den Daten auch wirklich ein Alphakanal enthalten ist. Also ob der Loader die Daten auch richtig geladen hat. Da das Übergeben als GL_RGBA aber wohl Problemlos klappt darf man da wohl von ausgehen.
Zum Darstellen von echten Transparenzen solltest du den Alphatest nicht verwenden. Denn der Alphatest kann nur ja oder nein als Sichtbarkeit zurück geben. Wenn du Semitranzparenzen haben möchtest, dann ist Blending genau das was du suchst. Damit kannst du einstellen wie sich der Alphakanal verrechnen soll. Und dafür ist (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) meistens schon genau die Richtige.
Du musst bei dir Blending auch entsprechend aktivieren und den Alphatest sicherheitshalber auch deaktivieren. Falls du den Alphatest vorher auch tatsächlich benötigst hast.
Code:
glEnable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
Falls dir das nicht helfen sollte tritt wieder Abschnitt 1 in Kraft. Dann wäre zu mindest ein Bild von dem falschen Ergebniss ganz nützlich. Wenn nicht sogar ein bisschen mehr Code.
PS: Antialiasing in Texturen. OpenGL stellt in der Regel nur das dar was man ihm sagt. Wenn deine Textur also bereits eine harte Kante enthält, dann wird OpenGL daraus nur bedingt eine Weiche machen.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Die Treppchen entstehen mit dem Alpha-Test, weil die Kanten dann keine echten Polygonkanten sind. Es sind Pixel, die einfach weggelassen werden, weil das Alpha-Wert die Kriterien nicht erfüllt (ist kleiner-gleich 0). Daher werden die Kanten nicht Antialiast (also nicht geglättet), wodurch dann die Treppen entstehen.
Das nur als erläuterung
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.