2016-06-24 8 views
-1

画面は常に黒です。スプライトを正しく表示する方法を教えてください。私のコードはスプライトを表示しませんSDL2

これは私のコードです:

#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; 
    } 
+0

sdl-2の仕組みは分かりませんが、あなたが定義していても 'SrcR'を使用していないことに気付きます。このライブラリのチュートリアルがあると仮定します。チュートリアル/サンプルとはあなたの例がどのように違うのですか? "SDL_RenderCopy(renderer、Tfloor、&SrcR、&DestR);でSrcRを追加したとしても、答えは – KevinDTimm

+0

thxです。何も変わらない:( –

+0

ところでチュートリアルと比べて何も変わらない:(... –

答えて

1

エラーメッセージが明示的です。 "floor.bmp"はサーフェスに変換されていないと言われています。 'img'パラメータがNULLであることを意味します。 )IMG_Load(の戻り値をチェックし

  • は(IMG_Loadであなたの写真へのフルパスを指定して)、例えば "/home/quentin/floor.bmp"
  • は、以下のことを試してみてください。

関連する問題