2012-04-08 14 views
0

私は0.5にアルファを変更するための私のOpenGL ESのシーン(バージョン1.1)でのテクスチャオブジェクトを持っています。は、OpenGL ESオブジェクトのアルファ値を変更するiPhone

私は、次のコードをしようとしています:

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

EDIT

私のテクスチャはJPGのみですまだです。これらをPNG形式で保存する必要がありますか?

どのように私はこれを修正することができますスポット誰ですか?

ありがとうございます。

答えて

1

ああ、私はそれを解決したと思う - あなたは照明を消す必要があり、それが動作するようです。

glDisable(GL_LIGHTING);

0

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

glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 

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

+0

ありがとうございます - 上記のコードを変更しましたが、この行に追加しましたが、画面上の変更はありません。 – GuybrushThreepwood

+0

glTexEnviのデフォルト値はGL_MODULATEなので、別の場所に変更しない限り、これを設定する必要はありません。 – GuybrushThreepwood