嘿伙计们我正在编写一个使用一些程序集和C的原始类型板,考虑将该板作为旧学校黑白游戏的aKin。
我在编写游戏时遇到问题,因为没有后备缓冲。当我清除屏幕时,它会直接绘制到屏幕上,以便屏幕真正被清除,从而使我绘制的任何内容都不可见,因为它会在下一次传递中立即被清除。因此,不是用新绘制的屏幕替换绘制的屏幕,而是清除屏幕然后绘制它。
我想出了一个hackish解决方案,我将渲染限制为每秒10帧。 我这样做的方法是清除屏幕,绘制形状,然后在1/10秒内刻录一个循环。这样,绘制的任何内容都将保持更长时间,并且可以更长时间显示,允许用户在立即擦除之前查看它。 即。
while (1)
{
doRender = 1;
screen_clear();
draw_circle(x,y,20,1);
while(doRender)
{
// a interrupt will set doRender to 0, thus ending the loop
}
}
这个有效!!它会产生一种闪烁,而不是可怕,但可以肯定。我的游戏不需要令人难以置信的帧速率,每秒10秒。
有没有人能更好地解决我的问题?
答案 0 :(得分:1)
你的解决方案很好。尝试通过仅清除绘制圆圈的区域来优化它。
答案 1 :(得分:1)
您也可以使用XOR渲染。例如:你将你的精灵XOR渲染到屏幕上进行渲染,然后在下一帧XOR它再次在同一个地方移除它并将它在新的地方进行异或。
你能等待vsync吗?如果您的绘图足够快,您可以在垂直空白间隔期间执行此操作,从而消除任何剩余的闪烁。