OpenGL ES 2.0 w / GLKit透明纹理
我正尝试应用纹理(128x128,中间有一个黑色箭头,其余纹理是透明的)。 我的模型包含也具有颜色数据的顶点。 在应用纹理之前,模型看起来正确,每个顶点都包含正确的颜色信息。 一旦我应用了纹理,就可以正确显示箭头处的各个部分,透明的部分是透明的,但模型也是透明的。 我希望纹理位于模型的“顶部”,并且您应该能够透视纹理的透明部分并查看下面模型的颜色。 请参阅下面的内容我正在谈论的内容。 我也添加了glEnable(GL_BLEND)和glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)。
正如你在下面看到的,第一个图像是纹理,第二个图像没有纹理。 我希望能够看到第一张图像上第二张图像的颜色数据。 什么是问题?
混合函数通常用于重叠半透明多边形。 从你的描述来看,我认为这不相关。
这听起来像你要求从顶点颜色和纹理颜色的阿尔法加权平均值中导出输出颜色。 在一个看起来像这样的着色器中:
gl_FragColor = vec4(
vertexColor.a * vertexColor.rgb + textureColor.a * textureColor.rgb, 1.0);
使用GLKit,您可能可以通过GLKBaseEffect
获得所需的效果,但我没有尝试过。 文档指出,除了设置纹理坐标之外,您还必须启用GLKVertexAttribColor
。 鉴于你的图像,你似乎已经这样做了,所以你可能需要编写自己的着色器。
使用GLKit设置片段颜色的能力依赖于使用GLKEffectPropertyTexture上的envMode属性。 这是我早些时候发布的评论,但现在要标记为答案。
链接地址: http://www.djcxy.com/p/34009.html