In OpenGL ES, wie lade ich eine Textur, die transparente Pixel hat?
-
03-07-2019 - |
Frage
Und dann richtig hat Anzeige? Ein Beispiel wäre in einem Rechteck mit einer runden Kugel sein, während eine andere Textur im Hintergrund in der Lage zu sehen.
bearbeiten. Im Moment, als ich die Textur der transparenten Pixel aus dem Quellbild geladen werden als schwarz angezeigt
Lösung
Für iPhone und N95 dies funktioniert:
Wenn Sie Textur aus Rohdaten werden geladen, stellen interne und Quellformat in GL_RGBA.
glTexImage2D(GL_TEXTURE_2D, 0,
GL_RGBA,
textureWidth,
textureHeight,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
pointerToPixels);
Und beim Rendern aktiviert Alpha-Blending:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
Andere Tipps
Die Antwort von @Virne vorgesehen ist richtig, und ich konnte es für Android-Geräte mit ein paar kleinen Änderungen verwenden. Das myImage
Objekt I verwendet wird, ist ein Standard-.png Bild mit Transparenz.
Ich habe die Textur mit diesem:
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, myImage, 0);
Und (wie Virne), I aktiviert Alpha-Blending beim Rendern:
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL10.GL_BLEND);