c - 我的代码不会显示 Sprite SDL2

标签 c sprite sdl-2

屏幕总是黑的。告诉我如何正确显示 Sprite 。

这是我的代码:

#define SHAPE_SIZE 32
    void aff_map(SDL_Renderer *renderer)
    {
      SDL_Surface *img;
      SDL_Texture *Tfloor
      int x = 0;
      int y = 0;
      int map[4][8] = {{0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0},
                       {0,0,0,0,0,0,0,0}};
      SDL_Rect SrcR;
      SDL_Rect DestR;

      DestR.x = 0;
      DestR.y = 0;
      DestR.w = SHAPE_SIZE;
      DestR.h = SHAPE_SIZE;

      img = IMG_Load("floor.bmp");
      Tfloor = SDL_CreateTextureFromSurface(renderer, img);

     while (y < 4)
        {
          x = 0;
          while (x < 8)
            {
if (map[y][x] == 0)
              SDL_RenderCopy(renderer, Tfloor, NULL, &DestR);
              x++;
              DestR.x = DestR.x + 32;
            }
          DestR.x = 0;
          DestR.y = DestR.y + 32;
          y++;
        }
      SDL_RenderPresent(renderer);
    }

int main()
    {
      SDL_Window *screen;
      SDL_Event evenements;
      SDL_Renderer *renderer;

      screen = SDL_CreateWindow("Zappy", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 8 * SHAPE_SIZE -32, 4 * SHAPE_SIZE, 0);

      renderer = SDL_CreateRenderer(screen, -1, SDL_RENDERER_ACCELERATED);
      SDL_RenderClear(renderer);

      while (42)
        {
          SDL_WaitEvent(&evenements);
          if (evenements.window.event == SDL_WINDOWEVENT_CLOSE ||
              evenements.key.keysym.sym == SDLK_ESCAPE)
        {
              SDL_DestroyWindow(screen);
              SDL_Quit();
              break;
        }
          aff_map(renderer);
        }
      return 0;
    }

最佳答案

错误消息很明确。 它表示“floor.bmp”尚未转换为表面。 这意味着'img'参数为NULL。

尝试以下操作:

  • 在 IMG_Load() 中指定图片的完整路径,例如“/home/quentin/floor.bmp”
  • 检查IMG_Load()的返回值。

关于c - 我的代码不会显示 Sprite SDL2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017429/

相关文章:

css - IE9 渲染 sprite hover image 1px off/blurred

android - 动态壁纸教程

cmake - 将 SDL2_image 构建为 CMake 外部项目

c++ - 如何将 opengl 3.3 渲染成 SDL2 纹理?

c - 在右边和左边用 1 填充位表示

c - 禁用 -dkms 错误

html - CSS Sprite 翻转显示垂直而不是水平

c++ - 用SDL2画圆吗?

c - C 中不同文件循环中的 Search_string

c - 为什么 -fno-stack-protector 会颠倒这些字符串的存储顺序?