我们通过OpenGL在一个场景中创建了几个半透明的3D立方体,在Windows 7和Fedora 15上显示效果很好,但在Meego系统上就变得很糟糕。
这是它在我的 Fedora 15 系统上的样子:
这就是它在 Meego 上的样子。线条的颜色已经被我们改变了,否则你看到的立方体会更可怜:
效果是通过普通的glColor4f函数实现的,通过设置alpha值使其透明。怎么会这样?
freeglut和openglut都在Meego系统上试用过,都没有更好的显示。
我什至尝试使用像 irrlicht 这样的引擎来实现它,但是当 beginScene 方法的 zBuffer 参数设置为 false 时,屏幕上除了黑色什么都没有(当它为 true 时是正常的,但那会不是我们想要的)。
这应该不是显卡或驱动的问题,因为我们在同一个上网本和系统上看到了一个透明球的3D游戏。
我们这里没有找到原因。任何人都可以帮助解释为什么会发生这种情况吗?
最佳答案
听起来好像您可能依赖默认设置(或行为),这可能因平台而异。
您是否明确设置了 OpenGL 的任何混合属性,例如 glBlendFunc ?如果是,发布执行此操作的相关代码可能会有所帮助。
其中一条评论提到了对透明对象进行排序。如果您不是,那么您可能需要考虑这样做以获得更准确的结果。在任何一种情况下,平台之间的行为应该是相同的,所以我猜这不是你的问题。
编辑:
另一个想法。你在设置 glCullFace ?可能是因为您的 vertex winding 导致您的透明面孔被剔除.
关于c++ - OpenGL 透明效果在 Meego 上显示的很糟糕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6778978/