0

そこで、SDL 2.0 移行ガイドを使用して、最終的にコードをエラーなしでコンパイルしました... しかし、今はクラッシュします。プログラムがクラッシュしたのはこれが初めてで、ガイドとなるコンパイラがありません。LazyFoo の 29 番目の sdl チュートリアルを使用して、移行できるかどうかを確認しています。正直なところ、私は忌まわしいプログラムを作ったと思っています。ここに私の進歩があります: http://www.pastebucket.com/21174

4

1 に答える 1

0

いくつかの問題があるようです。

まず第一に、load_images()関数内の画像をロードしていないため、それらに対して何かを呼び出すたびに、つまりレンダリングすると、それらは NULL ポインターになります。

次はあなたのinit()機能です。

bool init()
{
  SDL_Init;  // <---- REMOVE THIS LINE

  //Initialize all SDL subsystems
  if( SDL_Init( SDL_INIT_EVERYTHING) == -1 )
  {
    return false;
  }


  SDL_Window *sdlWindow;        // <----- REMOVE THIS VARIABLE
  SDL_Window *window;           
  SDL_Texture *sdlRenderer;     // <----- REMOVE THIS VARIABLE

  // Create an application window with the following settings:

  // NO NEED FOR SDL_WINDOW_OPENGL replace with SDL_WINDOW_SHOWN

  window = SDL_CreateWindow(
                          "Why is this even alive?",         //    window title
                          SDL_WINDOWPOS_UNDEFINED,           //    initial x position
                          SDL_WINDOWPOS_UNDEFINED,           //    initial y position
                          640,                               //    width, in pixels
                          480,                               //    height, in pixels
                          SDL_WINDOW_SHOWN                   //    flags - see below
                          );

  // sdlWindow should be just window and you should do a NULL check before creating the render
  if (window != NULL) {
    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0);

    if (renderer == NULL) {
      printf("Could not create renderer: %s\n", SDL_GetError());
      SDL_DestroyWindow(window);
    }
  }
  else {
    printf("Could not create window: %s\n", SDL_GetError());
    return false;
  }
}

とりあえず試してみて、うまくいくか見てください。これらはすべて非常に単純なエラーであり、通常はすぐに検出されるため、IDE を使用して解決することをお勧めします。

于 2013-09-20T16:46:05.440 に答える