我有一个瓦片地图阵列 [50][50]。
当我单击鼠标移动该阵列中每个图块的 x 和 y 时,我看到每个图块之间有空白 - 我相信这称为“撕裂”,这是不希望的。
我在谷歌上搜索了双缓冲并阅读了 wiki,http://en.wikipedia.org/wiki/Multiple_buffering#Double_buffering_in_computer_graphics。
它是如何在 SDL2 中完成的,特别是使用从“for 循环”创建的大型平铺数组?
...我怀疑您将平铺纹理复制到缓冲区纹理上,并在完全加载后将其复制到渲染器 - 尽管我无法使其正常工作,但很想看到一个完整的工作示例!
这是我以前的帖子,当前是我当前的代码: SDL2 双缓冲区不起作用,仍在撕裂
SDL2 自动为您处理双缓冲:
SDL_RenderClear 将清除当前的渲染缓冲区。SDL_RenderCopy 将渲染纹理到当前渲染缓冲区。SDL_RenderPresent将交换缓冲区,显示SDL_RenderCopy自上次SDL_RenderClear调用以来使用的所有内容。从 SDL2 开始,所有硬件渲染都必须是双缓冲的,因此您首先需要确保所有绘图都是通过硬件渲染库进行的。
然后您只需调用SDL_RenderPresent即可翻转双缓冲区。
如果您当前使用软件渲染系统,这应该可以修复它。但是,如果您已经这样做了,我会怀疑手头还有其他问题,您可能需要检查是否正在使用垂直同步,并查看绘图代码中是否存在其他可能导致此问题的错误。
请注意,如果您当前没有使用垂直同步,这也是一个可能的原因。您需要通过设置SDL_HINT_RENDER_VSYNC提示来修复此问题。
| 归档时间: |
|
| 查看次数: |
13153 次 |
| 最近记录: |