[英]OpenGL- GLKit: transparent objects and texturing
我的项目是使用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;
可能在我看不到的走廊里有一头大象; 欢迎任何帮助或指针,以帮助看到它的透明方块明星。
干杯,Stéphane
从文档 - GLKTextureEnvModeDecal使用纹理的alpha组件将纹理的颜色与输入颜色混合。
我想你想要GLKTextureEnvModeReplace。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.