当我更新每个帧的位置时,OpenGL灯光闪烁

当我更新每个帧的位置时,OpenGL灯光闪烁,opengl,jogl,Opengl,Jogl,我正在学习OpenGL,刚刚开始学习照明。我启用照明和灯光0,在我的init方法中将其环境光/漫反射/镜面反射设置为默认值,然后在每个帧执行以下操作: glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // do my 3rd-person camera transforms and rotations glLightfv(GL_LIGHT0, GL_POSITION, {0.1f, 0.0f, 0.0f}); (注意如果有点不对,我用JOGL编写ja

我正在学习OpenGL,刚刚开始学习照明。我启用照明和灯光0,在我的init方法中将其环境光/漫反射/镜面反射设置为默认值,然后在每个帧执行以下操作:

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应用程序,所以我修改了GL和GL。从每一行看C++的所有人都有更好的可读性):

然后我继续画三角形之类的,最后我做一个glFlush()

奇怪的问题是,当我运行我的应用程序时,灯会闪烁。在我的整个程序中,我没有其他对glLightfv的调用(如上所述,除了init方法中的调用,我已经调试了init方法以确保它只运行一次)。它闪烁得非常快,屏幕上显示撕裂。我也不会在场景图形中的任何点禁用(GL_照明);我不认为这会导致被照亮的物体闪烁

出于调试的目的,我还注释掉了我的绘图代码,没有任何东西会破坏照明-当然,我写了所有这些,并在照明场景之前对其进行了测试,所以我看不出有任何错误的原因

基本上我知道这没什么可依据的,但是以前有没有其他人有过这个问题?有什么简单的解决办法我就是找不到?请索取任何能帮助您和我的其他信息。最后,如果我不能得到一个答案,我可能不得不分解并编写一个测试用例,在这里我可以发布整个渲染代码并演示问题

但它有点显示了我所说的,因为光线是零星的。被照亮的框架就是它应该看起来的样子。而且,当我把速度降低到5fps时,它不会闪烁太多,更多的是随机打开或关闭。我不明白


谢谢

啊哈!我已经找到了答案。。。 我只为该位置指定了3个浮动,而它需要记录的4个浮动。所以第四个数字,一定对光的亮度有一些影响,是从内存中的其他随机区域读取的,当然奇怪的事情发生了


很抱歉浪费你的时间

一点也不浪费时间!我的团队花了数周的时间试图解决这个问题@IDWMaster,我很高兴你找到了这个答案!很抱歉你的团队花了这么长时间。。。