0

OpenGL ESシーン(バージョン1.1)に、アルファを0.5に変更したいテクスチャオブジェクトがあります。

私は次のコードを試しています:

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);

問題は、モデルの透明度が変化していないことです。モデルは画面に正しく表示されますが、アルファはまだ1です。

編集

私のテクスチャはjpgです。これらをPNGとして保存する必要がありますか?

誰かが私がこれを修正する方法を見つけることができますか?

ありがとうございました。

4

2 に答える 2

1

ああ、私はそれを解決したと思います-あなたは照明を消す必要があり、それからそれはうまくいくようです。

glDisable(GL_LIGHTING);

于 2012-04-09T08:20:00.527 に答える
0

テクスチャ環境変数を変調するように設定しましたか?このような:

glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

これは、OpenGLにオブジェクトの色にテクスチャの色を掛けるように指示します。glDrawElements()また、現在の色を設定するだけでなく、GL_COLOR_ARRYを使用する必要があるかどうかも覚えていません。

于 2012-04-09T00:10:23.283 に答える