Questions tagged «double-buffering»

1
在现代游戏中,双重或三次缓冲解决了什么问题?
我想检查一下我对使用双(或三)缓冲的原因的理解是否正确: 刷新频率为60Hz的监视器每秒可显示60次。如果监视器刷新监视器显示,则他将像素更新为像素,将行更新为行。监视器从视频存储器中请求像素的颜色值。 如果我现在运行一个游戏,则该游戏会不断操纵该视频内存。 如果此游戏不使用缓冲策略(双缓冲等),则可能会发生以下问题: 监视器现在正在刷新其监视器显示。此时,显示器已经刷新了上半部分显示器的显示。同时,游戏用新数据操纵了视频存储器。现在,监视器访问下半部分监视器,显示来自视频存储器的新操作数据。问题可能是撕裂或闪烁。 我对使用缓冲策略的案例的理解正确吗?还有其他原因吗?

3
在HTML5 Canvas游戏上有双重缓冲吗?
我简单的画布游戏似乎可以在Mac和Linux上的Chrome和FF上正常运行。我还没有机会在智能手机或Windows环境下对其进行测试。它不使用双缓冲,但是我已经看到一些使用它的JS Canvas示例。 什么时候建议使用双缓冲?它仅对特定的浏览器有影响吗?是否会对性能产生重大影响? 谢谢!

1
三重缓冲的好处是什么?
我阅读了上一个问题中写的所有内容。据我了解,在双缓冲中,程序必须等到复制或交换完成的图形后才能开始下一个图形。在三重缓冲中,程序具有两个后备缓冲区,并且可以立即开始绘制不涉及这种复制的缓冲区。 但是,如果在可以利用第三个缓冲区的情况下使用三重缓冲,这并不意味着绘制帧的速度快于监视器可以刷新的速度。因此,您实际上并没有获得更高的帧速率。那么,三重缓冲的好处是什么?

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.