我遇到了问题,当我移动它们时,我的精灵会留下痕迹。 尝试在每次刷新时绘制BG,但随后它开始闪烁。
这就是我做的事情
// ...
int main(int argc, char *argv[])
{
BITMAP *buffer = NULL;
BITMAP *graphics = NULL;
buffer = create_bitmap(SCREEN_W, SCREEN_H);
graphics = load_bitmap("my_graphics.bmp", NULL);
clear_to_color(screen, makecol(0, 0, 0));
clear_to_color(buffer, makecol(0, 0, 0));
while(!key[KEY_ESC])
{
// ...
render_map(100,100);
// ...
}
}
void render_map(int w, int h)
{
// ...
for(int i=0;i < w * h;i++)
{
masked_blit(graphics, buffer, 0, 0, pos_x, pos_y, 32, 32);
}
// ...
blit(buffer, screen, camera_x,camera_y,0,0,SCREEN_W, SCREEN_H);
clear_to_color(buffer, makecol(0, 0, 0));
}
提前感谢您提供任何帮助
答案 0 :(得分:0)
您的代码有点难以阅读,而且您遗漏了大部分内容。所以很难肯定地说,但这条线看起来很可疑:
blit(buffer, screen, camera_x,camera_y,0,0,SCREEN_W, SCREEN_H);
使用缓冲区时,通常会将其称为:
blit(buffer, screen, 0,0, 0,0, SCREEN_W,SCREEN_H);
这是您在屏幕上绘制的唯一时间。所以步骤是: