时间:2010-07-26 17:52:30

标签: c++ opengl ubuntu fedora freeglut

2 个答案:

答案 0 :(得分:2)

我按顺序混响了以下两个电话。应该这样。

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

我这样做了:

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

因此我无法保证双缓冲窗口,因此有时它会闪烁,有时则不会。

同样在Red-Hat发行版中,size_t被定义为signed int,而Ubuntu使用unsigned int。这导致我的教授机器在尝试使用函数fread()时出现循环问题,函数fread(),其返回类型在Fedora中为-1,在Ubuntu中为static_cast(-1),我认为这不好:/。花了几天时间来跟踪Ubuntu内核源代码中的问题。

答案 1 :(得分:0)

我在教授OpenGL方面的经验,当过度使用不同于预期的方式时会出现这种情况。一些实现/驱动程序处理它,而其他实现/驱动程序不处理 - 当它们以非标准方式使用时,实现之间存在很大差异。当以标准方式使用时,差异非常小。

我见过的最常见的原因是每次更改屏幕后都没有调用glutPostRedisplay。

其他可能的原因是在显示功能以外的位置绘图,或者没有正确设置回调。

除此之外,我只能猜测发生了什么,但如果一个实现什么都没有显示,那么我很确定你有一些基本的错误。