【问题标题】:SDL : blitting on background instead of screen?SDL:在背景而不是屏幕上进行闪烁?
【发布时间】:2023-03-15 15:13:01
【问题描述】:

您好,我正在开发一款 SDL/C 游戏,我制作了一个 相机滚动 大背景(6000*1024)和(1024*768)屏幕,

game.screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE ); 

所以如果我想在屏幕上粘贴一些东西作为目的地:

apply_surface( xxx, yyy, map.BALL, game.screen, NULL );

它会在移动时跟随相机,对于敌人来说,他们应该在背景而不是屏幕上移动!

因此,如果我在背景上将某些东西作为目的地,我就会遇到以下问题,

apply_surface( xxx, yyy, map.BALL, map.background, NULL );

旧图像在移动时保留在背景上,如下图所示:

【问题讨论】:

    标签: c++ c sdl 2d-games sdl-image


    【解决方案1】:

    首先我不得不说你实现相机滚动的方式相当繁重。我建议您将对象直接绘制到屏幕表面,同时考虑相机位置。

    如果你想坚持你的计划,你应该在重绘之前清除你的背景。这可以使用命令 SDL_FillRect 来完成。

    // Replace 101, 102, 103 with the background color you want
    SDL_FillRect(map.background, NULL, SDL_MapRGB(map.background->format, 101, 102, 103));
    

    【讨论】:

      猜你喜欢
      • 2015-08-30
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多