2012-04-05 14 views
1

私はOpenGL ES 1.1 for iPhoneで初心者です。今日、私は黒い背景にテクスチャを描こうとしましたが(テクスチャにはアルファチャンネルが含まれています)、結果はソースのPNGファイルとは異なります。iPhone - OpenGL ES 1.1 - Alpha Blendはテクスチャを間違った色にします

iPhone &シミュレータの結果:

enter image description here

が光をオフにし

は:

enter image description here

それがあるべきだ(明るい&もっとぼかし):

enter image description here

ソーステクスチャファイル:

enter image description here

これは私が使用したソースコードである:

//Setup: 
glEnable(GL_ALPHA_TEST); 
glEnable(GL_BLEND); 
glAlphaFunc(GL_GREATER,0.01); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
static const GLfloat light0Ambient[] = {1.0, 1.0, 1.0, 1.0}; 
static const GLfloat light0Diffuse[] = {1.0, 1.0, 1.0, 1.0}; 
static const GLfloat light0Position[] = {0.0, 0.0, 10.0}; 
glLightfv(GL_LIGHT0, GL_AMBIENT, (const GLfloat *)light0Ambient); 
glLightfv(GL_LIGHT0, GL_DIFFUSE, (const GLfloat *)light0Diffuse); 
glLightfv(GL_LIGHT0, GL_POSITION, (const GLfloat *)light0Position); 
glEnable(GL_TEXTURE_2D); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 

描画コード:

glBindTexture(GL_TEXTURE_2D, OYTextID); 
glVertexPointer(3, GL_FLOAT, 0, GUI_Vertices); 
glNormalPointer(GL_FLOAT, 0, GUI_Normals); 
glTexCoordPointer(2, GL_FLOAT, 0, GUI_TexCoords); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

問題は何色がうまくいかない作ります??

お読みいただきありがとうございました。 よろしくお願いいたします&私の英語は申し訳ありません。

+0

照明をオフにして描画しようとしましたか?違いは? – Mark

+0

glBlendFuncはOKのようです... Markさんの示唆どおりに消灯してみてください。 – Beppe

+0

おかげさまでBeppe&Mark、私はライトをオフにしようとしましたが、問題を解決しませんでした!更新画像をご覧ください:( –

答えて

5

あなたのPNGファイルには、すでにプリミックスされたアルファがあります。この場合、設定する必要があります

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE instead of GL_SRC_ALPHA 
+0

あなたは素晴らしい人です!ありがとうございます! –

関連する問題