OpenGl- Glkit:透明的对象和纹理



我的项目是使用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。

最新更新