Ich habe ein strukturiertes Objekt in meiner OpenGL ES-Szene (Version 1.1), für das ich das Alpha auf 0,5 ändern möchte.Alpha-Wert des OpenGL-ES-Objekts ändern - GL_BLEND - iPhone
Ich versuche, den folgenden Code:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1.0, 1.0, 1.0, 0.5);
glVertexPointer(3, GL_FLOAT, 0, vertexes);
glNormalPointer(GL_FLOAT, 0, normals);
glTexCoordPointer(2, GL_FLOAT, 0, textures);
GLfloat ambientAndDiffuse[] = kAmbience;
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, ambientAndDiffuse);
GLfloat specular[] = kSpecular;
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, kShininess);
GLfloat emission[] = kEmission;
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission);
glDrawElements(GL_TRIANGLES, vertexCount, GL_UNSIGNED_SHORT, indices);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_BLEND);
Das Problem besteht darin, dass die Transparenz des Modells ändert sich nicht. Das Modell wird auf dem Bildschirm korrekt angezeigt, aber die Alpha ist noch 1.
EDIT
Meine Texturen sind JPGs. Muss ich diese als PNGs speichern?
Kann jemand feststellen, wie ich das korrigieren kann?
Vielen Dank.
Danke - ich habe in dieser Zeile hinzugefügt (Code oben geändert), aber nichts ändert sich auf dem Bildschirm. – GuybrushThreepwood
Der Standardwert für glTexEnvi ist GL_MODULATE. Es ist also nicht erforderlich, dies zu setzen, es sei denn, Sie haben es an einer anderen Stelle geändert. – GuybrushThreepwood