我是3D图形的初学者,我正在尝试为iPhone制作3D游戏,更具体地说,是使用包含透明度的纹理。我能够将纹理(8位.png文件)加载到OpenGL中并将其映射到正方形(由三角形条带制成)但是当我在模拟器中运行应用程序时,图像的透明部分不透明 - 它们拍摄背景颜色,无论它设置的是什么,但是模糊了更远的图像。我无法发布截图,因为我是新用户,所以我为此道歉。我会尝试上传并以其他方式链接它。
更令人讨厌的是,当我将图像加载到Apple的GLSprite示例代码中时,它完全按照我的意愿工作。我已将GLSprite的setupView中的代码复制到我的项目中,但仍然无法正常工作。
我正在使用混合功能:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
我的印象是这对我想做的事情是正确的。
我在这里缺少一些非常基本的东西吗?任何帮助都会非常感激,因为我会在几周内将其作为课程作业提交,并且非常希望它可以工作。
答案 0 :(得分:0)
让我打破这个:
首先绘制透明对象。
此时发生了两件事:
然后在透明对象后面绘制其他对象。 但是不会绘制任何这些对象像素,因为它们的深度缓冲值小于已经绘制的值。
这个问题的解决方案是将你的场景从前面画回来(从更远的地方开始画画)。
希望有所帮助。
编辑:我假设你在这里使用深度缓冲区。如果这不正确,我会考虑写另一个答案。