我使用OpenGL作为2D平铺引擎的底端。 当一切都是2D时,优化某些问题很简单。 例如,滚动。如果我知道屏幕的某个部分 需要滚动底部,然后我可以只是在那个部分上空。 我一个晚上移动超过1个像素。没有明确的硬件 支持(想想老任天堂hw),这需要大量的像素写入。一个 片上bitblt将是下一个最好的事情。
基本上,我正在研究如何优化我的GL调用 VRAM纹理呈现为高效的硬件blits。
是否可以让GL滚动帧缓冲,或者我应该只是 让自己重新进行双缓冲并重新渲染整个场景 对于每一帧?
THX
答案 0 :(得分:0)
我不知道你将如何绕过,至少每帧都做一个带有纹理的全屏rect渲染(当它实际滚动时)。我还没有看到在图形卡上暂时移动帧缓冲区指针的能力。
但是,您可以限制每帧渲染所需的场景量。如果将滚动场景保留为纹理,则可以绑定到屏幕外帧缓冲区并渲染其无效部分。然后,您只需使用UV操作来完成最终的全屏矩形blit。