我的项目是使用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如下:
效果.texture2d0.envmode = glktextureenvmodedecal;
我没有看到走廊里有一头大象。任何帮助或指针都将受到欢迎,以帮助您看到恒星的透明广场。
欢呼,Stéphane
来自文档 - glktextureenvmodedecal使用纹理的alpha组件将纹理的颜色与输入颜色混合。
我认为您想要glktextureenvmodereplace。