zer*_*ool 0 iphone textures alphablending opengl-es
这可能是一个noob问题,但是,我还没有找到合适的答案:
我在OpenGL ES中有一个对象(实际上是Blender的UV映射导出),我想对它应用两个纹理.确切地说,我有一个像地球一样的球体,我想在它上面添加两种纹理(白天和夜晚).
我曾想过通过alpha映射,应该可以在运行时以编程方式淡化一个纹理并显示另一个纹理,这样我的地球就可以成为地球的真实模拟.我有它背后的数学,即为对象的每个面创建alpha映射不是问题.
任何提示/指示如何实现这一目标?
谢谢
您正在寻找的效果可以通过OpenGL ES 1.1中的纹理合成器来实现.默认情况下,您启用的每个纹理单元都设置为将前一阶段的输出乘以当前纹理的颜色.在第一个纹理单元的情况下,前一个阶段只是顶点颜色.通过更改纹理合并器状态,您可以添加,减去,插入或取代纹理样本的点积.
链接页面上的第二个和第三个示例(在两个纹理之间插入)应该与您尝试执行的操作非常相似.如果比较两个示例的源代码,您应该看到它们几乎完全相同,除了GL_SRC2_RGB/ GL_SRC2_ALPHA和GL_OPERAND2_RGB/ 的配置GL_OPERAND2_ALPHA.您需要在此处指定的内容取决于您为两个纹理生成混合因子的位置/方式.您可以通过指定GL_PRIMARY_COLORfor 来从顶点颜色中获取GL_SRC2_*,这在示例中未显示.
(注意:我链接的页面建议使用GLSL而不是纹理组合器.如果您的软件需要在不支持OpenGL ES 2.0的旧硬件上运行,那么很遗憾这不是一个选项.)
| 归档时间: |
|
| 查看次数: |
5047 次 |
| 最近记录: |