我正在尝试为图形库制作SDL2适配器。我相信该库假定它在屏幕上绘制的所有内容都保留在屏幕上,只要它从不在其顶部绘制任何内容即可。 (有关此问题的详细信息,请参阅问题的结尾)
最好的方法是什么?
我遇到了多种解决方案,包括:
SDL_RenderClear
。问题在于SDL使用了一个双缓冲区,因此内容可以在其中任何一个中结束,而我最终一次仅选择渲染的一个子集。我可能缺少有关SDL2的东西,也肯定缺少有关库(Adafruit-GFX-Library)的东西。 transaction api在这种情况下是什么意思?我找不到任何有关它的信息,我觉得这可能很重要。
答案 0 :(得分:0)
根据我对SDL2和常规渲染应用程序编程的了解,SDL2的设计目的是每次绘制一个完整的框架,这意味着您可以通过OpenGL API调用清除“当前窗口”
greeterMaker.standardGreeting = "Hey there!";
清除当前的OpenGL上下文,即帧缓冲区,您将拥有其中的2个,或者使用我不熟悉的SDL2渲染器。 然后,您将交换缓冲区,然后重复。 (最适合this architecture proposal I am relying on)
因此,要么必须以某种方式重播库中的draw命令以获取第二帧,要么通过
至少对于OpenGL后端禁用双帧缓冲。glClearColor(0, 1.0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
(有关其他OpenGL SDL2设置代码,请参见this GitHub repository with a general helper class of mine