嘿,伙计们,我正在为一个原始类型的板编程,使用一些汇编和C,认为这个板是老式黑白游戏男孩的同类。
我在写游戏时遇到了一个问题,因为没有后台缓冲区。当我清除屏幕时,它会直接绘制到屏幕上,这样屏幕就真正被清除了,从而使我绘制的任何东西都不可见,因为它在下一次过程中会立即被清除。因此,它没有用新的绘制屏幕替换绘制的屏幕,而是先清除屏幕,然后绘制。
我想出了一个破解的解决方案,将渲染速度限制在每秒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/秒就可以了。
有人能更好地解决我的问题吗?
您的解决方案很好。尝试通过只清除绘制圆的区域来优化它。
您也可以使用XOR渲染。例如:你将你的精灵与屏幕异或以渲染它,然后在下一帧的同一位置再次异或以移除它,并在它的新位置异或。
你能等vsync吗?如果绘制速度足够快,则可以在垂直空白间隔期间进行绘制,从而消除任何剩余的闪烁。