5

我们一直在通过 OpenGL 在一个场景中创建几个半透明的 3D 立方体,它们在 Windows 7 和 Fedora 15 上显示非常好,但在 Meego 系统上变得非常糟糕。

这是在我的 Fedora 15 系统上的样子:

这就是我的 Fedora 15 系统上的样子。

这就是它在 Meego 上的样子。线的颜色已经被我们改了,不然你看到的方块会更可怜:

这就是它在 Meego 上的样子。 线的颜色已经被我们改了,否则你看到的方块会更可怜。

仅使用普通的 glColor4f 函数即可实现效果,只需设置 alpha 的值即可使其透明。怎么会这样?

freeglut 和 openglut 都在 Meego 系统上进行了尝试,但都没有更好的显示。

我什至尝试使用像 irrlicht 这样的引擎来实现这一点,但是当 beginScene 方法的 zBuffer 参数设置为 false 时,屏幕上除了黑色之外什么都没有(当它为 true 时是正常的,但这不会是什么我们想要)。

这应该不是显卡或驱动程序的问题,因为我们已经在同一个上网本和系统上看到了一个透明球的 3D 游戏。

我们在这里找不到原因。任何人都可以就为什么会发生这种情况提供任何帮助吗?

4

2 回答 2

6

听起来好像您可能依赖默认设置(或行为),这可能因平台而异。

您是否明确设置了任何 OpenGL 的混合属性,例如glBlendFunc?如果您是,则发布执行此操作的相关代码可能会有所帮助。

其中一条评论提到了对透明对象进行排序。如果不是,那么您可能需要考虑这样做以获得更准确的结果。无论哪种情况,平台之间的行为应该是相同的,所以我猜这不是你的问题。

编辑:

另一种想法。你在设置glCullFace吗?可能是因为您的顶点缠绕,您的透明面被剔除。

于 2011-07-21T16:32:13.290 回答
1

freeglut 和 openglut 都在 Meego 系统上进行了尝试,但都没有更好的显示。

这些只是简单的窗口框架,对 OpenGL 执行没有任何影响。

在你的混合代码的某个地方你搞砸了。从正确渲染的外观来看,我会说你的混合功能有glBlendFunc(GL_ONE, GL_ONE),而在 Meego 上它类似于glBlendFunc(GL_SRC_ALPHA, GL_ONE).

于 2011-07-22T08:00:00.710 回答