0

嘿伙计们,我正在使用一些汇编和 C 为原始类型板编程,认为该板类似于老式的黑白游戏男孩。

我在编写游戏时遇到了一个问题,因为没有后备缓冲区。当我清除屏幕时,它会直接绘制到屏幕上,以便真正清除屏幕,从而使我绘制的任何内容都不可见,因为它会在下一次通过时立即清除。因此,它不是用新的绘制屏幕替换绘制的屏幕,而是清除屏幕然后绘制它。

我想出了一个骇人听闻的解决方案,将渲染限制为每秒 10 帧。我这样做的方法是清除屏幕,绘制形状,然后在 1/10 秒内燃烧一个循环,无论多长时间。这样,任何被绘制的东西都会在那里停留更长时间,并且可见的时间更长,允许用户在它被立即擦除之前看到它。IE

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/秒就可以了。

有人对我的问题有更好的解决方案吗?

4

2 回答 2

1

你的解决方案很好。尝试通过仅清除绘制圆圈的区域来优化它。

于 2012-12-02T08:15:26.390 回答
1

您还可以使用 XOR 渲染。例如:你将你的精灵异或到屏幕上来渲染它,然后在下一帧再次在同一个地方异或它以将它移除并将它异或到它的新位置。

可以等vsync吗?如果您的绘图速度足够快,您可以在垂直空白间隔期间进行,消除任何剩余的闪烁。

于 2012-12-02T11:22:16.953 回答