1

私のプロジェクトは、GLKit で OpenGL 2.0 を使用する IOS アプリです。一言で言えば、正方形に適用したい背景が透明な星のテクスチャがあります。望ましい最終結果は星を見ることです。四角い星ではありません。

私の現在の問題は、正方形にテクスチャを適用すると、マテリアルの色変数によって定義された色付きの正方形を持つ星が表示されることです。私が望むのは、星だけを見て、残りの正方形を透明にすることです。

コードは次のとおりです。

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 


    [effectTmp prepareToDraw];

    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
    glEnableVertexAttribArray(GLKVertexAttribNormal);

    glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(ColoredVertexData3D), &vertexDataTexture[0].vertex);
    glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, sizeof(ColoredVertexData3D), &vertexDataTexture[0].normal);

    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(ColoredVertexData3D), &vertexDataTexture[0].color);

    glDrawArrays(GL_TRIANGLES, 0, [drawObjectTmp getSizeFromVertexIndicesArray]);
    glDisableVertexAttribArray(GLKVertexAttribPosition);
    glDisableVertexAttribArray(GLKVertexAttribTexCoord0);
    glDisableVertexAttribArray(GLKVertexAttribNormal);

    glDisable(GL_BLEND);

また、envMode は以下のように GLKTextureEnvModeDecal に設定されます。

effect.texture2d0.envMode = GLKTextureEnvModeDecal;

おそらく私が見ていない廊下に大きな象がいます。透明な正方形で星を見るのを助けるために、どんな助けやポインタも歓迎されます.

乾杯、ステファン

4

1 に答える 1

3

ドキュメントから- GLKTextureEnvModeDecal は、テクスチャのアルファ コンポーネントを使用して、テクスチャの色を入力色とブレンドします。

GLKTextureEnvModeReplace が必要だと思います。

于 2012-11-08T01:24:24.210 に答える