首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨Linux发行版编译时的OpenGL问题

跨Linux发行版编译时的OpenGL问题
EN

Stack Overflow用户
提问于 2010-07-27 01:52:30
回答 2查看 242关注 0票数 3

我最近用opengl (使用freeglut)写了一个迷宫游戏,在Ubuntu或Cygwin中构建时运行良好,但当使用freeglut构建在Fedora Core 12上时,游戏就崩溃了,我的教授在他的机器上构建它时什么也看不见(他没有透露操作系统)。

此外,在以前的任务中,即使我实现了双缓冲,并且在每次显示后刷新缓冲区,我也得到了闪烁。闪烁发生在我的Fedora机器上,在我的Ubunutu机器上很少见,在cygwin中根本没有。

最后,在Fedora机器上,雾非常密集,似乎忽略了对'glFogf(GL_FOG_DENSITY,0.1)‘的调用。然而,在Cygwin和Ubuntu上,雾表现得无懈可击。

在不同的操作系统中,freeglut的实现之间是否有太多的不同,这将是一个问题?我的教授似乎准备在这些项目上让我失望,但我不知道为什么opengl在不同的操作系统之间表现得如此不稳定。

如果您有任何见解,请让我知道,并感谢您的时间。

EN

回答 2

Stack Overflow用户

发布于 2010-08-11 11:46:41

我把下面两个电话搞混了。应该是这样的。

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);glutCreateWindow(“我的窗口”);

我是这样想的:

glutCreateWindow(“我的窗口”);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);

因此,我不能保证有一个双缓冲的窗口,因此它有时会闪烁,有时不会。

同样在Red发行版中,size_t被定义为有符号整数,而Ubuntu则使用无符号整数。这导致我的教授在尝试使用函数fread()时出现了循环问题,该函数的返回类型在Fedora中为-1,在Ubuntu中为static_cast(-1),我认为这不太好:/。我花了几天的时间才在Ubuntu内核源中找到这个问题。

票数 2
EN

Stack Overflow用户

发布于 2010-07-31 13:17:22

在我教OpenGL的经验中,当glut的使用方式与预期的不同时,就会发生这种情况。一些实现/驱动程序处理它,而另一些不处理-当它们以非标准的方式使用时,实现之间有相当大的差异。当以标准方式使用时,差异非常小。

我见过的最常见的原因是,每次屏幕更改后,glutPostRedisplay都不会被调用。

其他可能的原因是在display函数以外的位置绘制,或者没有正确设置回调。

除此之外,我只能猜测发生了什么,但如果一个实现根本没有显示任何内容,那么我可以肯定你肯定搞错了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3337494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档