c++ - OpenGL 透明效果在 Meego 上显示的很糟糕

标签 c++ opengl 3d meego irrlicht

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

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

This is what it looks like on my Fedora 15 system.

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

This is what it looks like on Meego. The color of the line has been changed by us, otherwise the cubes you see would be more pathetic.

效果是通过普通的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/

相关文章:

c++ - C++中最基本的类是什么

c++ - 如何使 Qt 的 BorderLayout 项目可调整大小?

c++ - OpenGL glBegin ... glEnd

c++ - 如何在 PCL 数据文件中存储/写入点云的表面法线?

python - 在 Matplotlib 中绘制一个 3d 立方体、一个球体和一个向量

android - 如何使用 android.graphics.Camera.rotateX(angle) 在特定点旋转 Canvas

c++ - cgicc 查询字符串解析

c++ - ifstream::read 没有说明它真正读取了多少字节?

c++ - 3d 立方体 opengl - 重叠边

c - OpenGL 应用程序崩溃