OpenGL的光闪烁,当我更新其位置的每个帧(OpenGL light flickering whe

2019-09-16 22:07发布

我学习OpenGL和刚开始进入照明。 我使照明及光0,设置它的环境/扩散/镜面为默认值在我的init方法,然后将每个帧I做这样的事情:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// do my 3rd-person camera transforms and rotations
glLightfv(GL_LIGHT0, GL_POSITION, {0.1f, 0.0f, 0.0f});

(注意:如果是稍有不妥,我写我的使用JOGL的Java应用程序,所以我修剪的冰川和冰川从每行以提高可读性为你的C ++人:))

然后,我继续我的画和三角形等,并在最后我做一个glFlush()。

奇怪的问题是,当我运行我的应用程序时,指示灯将闪烁。 我在我的整个节目没有其他调用glLightfv(比其他的,如上面提到的,在我的init方法,我已经调试,以确保它不会只运行一次调用)。 它闪烁非常快,屏幕显示撕裂。 我也是在我的场景绘制的任何一点不glDisable(GL_LIGHTING); 不,我认为应该引起上火对象闪烁。

我也有,为了调试的目的,注释掉了我的绘制代码块,并没有什么似乎打破了照明 - 当然,我写了这一切,反正照明场景之前测试过它,所以我认为没有理由应该是错误。

基本上,我知道这是没有太大的去了,但在其他人之前有这个问题? 有一些简单的解决方案,我只是找不到? 请要求任何额外的信息,可以帮助你帮助我。 而在最后,如果我根本无法得到答案,我可能要打破和编写一个测试情况下我可以在这里发布整个渲染代码,并说明问题。

这是一个非常糟糕的gif动画我试图做...但它还挺显示了我说的,只要轻是零星的。 照亮帧是什么它应该看起来像。 此外,它不是当我慢下来到5fps的,更多的只是有点随意开启或关闭如此多的闪烁。 我不明白这一点...

谢谢!!

Answer 1:

啊哈! 我找到了答案已经...我只指定3周的float的位置,当它要4中记载这里 。 因此,第四个数字,它必须对灯光的亮度影响一些,正在从内存中其他一些随机区读取,当然还有奇怪的事情发生了。

对不起,浪费你的时间!



文章来源: OpenGL light flickering when I update its position each frame
标签: opengl jogl