Questions tagged «vsync»

5
每秒设置帧上限有什么好处?(如果有)
我正在使用OpenGL开发一个简单的游戏,使用SDL进行显示初始化和输入,从时间的角度来看,我有两个选择。当以秒为单位的optimableTimePerFrame = 1 / theFramerateCap时,排名第一的仅是为optimizeTimePerFrame休眠的-theTimeTakenToRender。(我不完全确定这是否必要,因为这等效于使用vsync,这可能更准确。如果我的假设正确,请告诉我SDL + OpenGL是否默认具有vsync,如果没有,另一种方法是测量自渲染最后一帧以来的时间,并仅相应地调整运动。(渲染框架所花费的时间越短,实体在该框架中移动的距离越少)。在性能,减少闪烁等方面,这两种方法的优缺点是什么?
13 opengl  sdl  frame-rate  vsync 

3
OpenGL实际上需要多长时间来更新屏幕?
我在C中有一个简单的OpenGL测试应用程序,它根据按键输入绘制不同的内容。(Mesa 8.0.4,在配备NVIDIA GTX650的PC上与Mesa-EGL和GLFW,Ubuntu 12.04LTS一起尝试过)。绘制非常简单/快速(旋转三角形类型的东西)。我的测试代码没有以任何方式故意限制帧速率,它看起来像这样: while (true) { draw(); swap_buffers(); } 我对此进行了非常仔细的计时,发现从一个eglSwapBuffers()(或glfwSwapBuffers相同的东西)调用到下一个调用的时间约为16.6毫秒。eglSwapBuffers()即使画出的内容非常简单,从通话后到下次通话前的时间也仅比该时间少一点。交换缓冲区调用花费的时间不到1ms。 但是,从应用程序响应按键更改其绘画到实际在屏幕上显示更改的时间> 150ms(价值约8-9帧)。这是通过以60fps的屏幕和键盘的摄像机记录来测量的。 因此,问题是: 在调用交换缓冲区与实际显示在屏幕之间的绘制在哪里缓冲?为什么要延迟?看起来该应用始终都在屏幕前绘制许多帧。 OpenGL应用程序可以做什么以立即绘制屏幕?(即:无缓冲,仅阻塞直到绘制完成;我不需要高吞吐量,我需要低延迟) 应用程序可以做些什么来使上述立即抽奖尽快发生? 应用程序如何知道当前屏幕上实际显示的内容?(或者,当前缓冲延迟是几帧/几帧?)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.