我的项目是一个使用 OpenGL 2.0 和 GLKit 的 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;
可能走廊里有一头我没看到的大象;并且欢迎任何帮助或指针来帮助查看具有透明正方形的星星。
干杯,斯蒂芬