1

私はiPhone用のOpenGL ES 1.1の初心者です。今日、黒の背景に png テクスチャを描画しようとしましたが (テクスチャにはアルファ シャネルが含まれています)、結果はソースの png ファイルとは異なります。

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

ここに画像の説明を入力

電気を消す:

ここに画像の説明を入力

それはあるべきです(より明るく、よりぼやけます):

ここに画像の説明を入力

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

ここに画像の説明を入力

これは私が使用するソースコードです:

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

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

読んでくれてありがとう、助けてくれてありがとう。よろしくお願いします。私の英語で申し訳ありません。

4

1 に答える 1

5

あなたのPNGファイルにはすでにアルファが乗算されているようです。この場合、設定する必要があります

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE instead of GL_SRC_ALPHA
于 2012-04-06T06:24:20.580 に答える