OpenGL 透明效果在 Meego 上显示得非常糟糕
Posted
技术标签:
【中文标题】OpenGL 透明效果在 Meego 上显示得非常糟糕【英文标题】:OpenGL transparent effects displayed quite awful on Meego 【发布时间】:2011-07-21 15:52:36 【问题描述】:我们已经通过 OpenGL 在一个场景中创建了几个半透明 3D 立方体,它们在 Windows 7 和 Fedora 15 上显示非常好,但在 Meego 系统上变得非常糟糕。
这是在我的 Fedora 15 系统上的样子:
这就是它在 Meego 上的样子。线的颜色已经被我们改过了,不然你看到的方块会更可怜:
效果是通过普通的glColor4f函数实现的,通过设置alpha的值就可以变成透明的。怎么会这样?
已经在 Meego 系统上尝试过 freeglut 和 openglut,但都没有更好的显示。
我什至尝试使用像 irrlicht 这样的引擎来实现这一点,但是当 beginScene 方法的 zBuffer 参数设置为 false 时,屏幕上除了黑色之外什么都没有(如果设置为 true 则正常,但这会不是我们想要的)。
这应该不是显卡或驱动的问题,因为我们在同一个上网本和系统上看到了一个透明球的 3D 游戏。
我们在这里找不到原因。有人可以就为什么会发生这种情况提供任何帮助吗?
【问题讨论】:
您对透明对象进行排序吗?见opengl.org/wiki/Transparency_Sorting 您是否正确设置了 glBlendFunc? freeglut 和 openglut 只是窗口框架,更改它们不会对您的 OpenGL 渲染产生任何影响。 【参考方案1】:听起来好像您可能依赖默认设置(或行为),这可能因平台而异。
您是否明确设置了任何 OpenGL 的混合属性,例如 glBlendFunc?如果您是,发布相关代码可能会有所帮助。
其中一个 cmets 提到了对透明对象进行排序。如果不是,那么您可能需要考虑这样做以获得更准确的结果。无论哪种情况,平台之间的行为应该是相同的,所以我猜这不是你的问题。
编辑:
另一个想法。你在设置glCullFace吗?可能是因为您的vertex winding,您的透明面孔被剔除。
【讨论】:
问题出在哪里?【参考方案2】:已经在 Meego 系统上尝试过 freeglut 和 openglut,但都没有更好的显示。
这些只是简单的窗口框架,对 OpenGL 执行没有任何影响。
您在混合代码中的某个地方搞砸了。从正确渲染的外观来看,我会说你的混合函数是 glBlendFunc(GL_ONE, GL_ONE)
,而在 Meego 上它类似于 glBlendFunc(GL_SRC_ALPHA, GL_ONE)
。
【讨论】:
以上是关于OpenGL 透明效果在 Meego 上显示得非常糟糕的主要内容,如果未能解决你的问题,请参考以下文章