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