SDLを使いこなしていると、画像をメインの画面の背景として開き、動的にするプログラムを作って、サイズの異なる画像が表示されるようにしました。異なるサイズの画面。問題は、なぜ私を失わないのか分かりません。私はコンパイルすることができますが、背景画像が何らかの不明な理由でヌルになったため、画面を作成しようとするとプログラムがエラーになります。どんな考え?SDLで画面が表示されない前に画像を作成する
プログラムはかなり小さいです:
#include <iostream>
#include "SDL/SDL.h"
#define bpp 32
int init(){
if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
return 1;
// will init ttf later
return 0;
}
SDL_Surface * open_image(std::string image_name){
SDL_Surface * loaded_image = SDL_LoadBMP(image_name.c_str());
if (loaded_image){
SDL_Surface * optimized_image = SDL_DisplayFormat(loaded_image); // becomes NULL
SDL_FreeSurface(loaded_image);
return optimized_image;
}
return loaded_image;
}
int main(int argc, char * argv[]){
if (init())
return 1;
SDL_Surface * background = open_image("hello.bmp");
SDL_Surface * screen = SDL_SetVideoMode(background -> w, background -> h, bpp, SDL_SWSURFACE); // erroring here
SDL_BlitSurface(background, NULL, screen, NULL);
if (SDL_Flip(screen) == -1)
return 1;
bool quit = false;
SDL_Event event;
while (!quit)
while (SDL_PollEvent(&event))
if (event.type == SDL_QUIT)
quit = true;
return 0;
}
私は明らかに存在しない値にアクセスしているエラー3を、取得しています。この場合は、背景がNULLであるため、バックグラウンドではwとhです。
は、それがエラーまたは実行時エラーをコンパイルするのですか? –
私は私の質問を編集しました。そのランタイムエラー – calccrypto
したがって、open_imageにエラーがありますか?どこから? SDL_LoadBMPはすでにNULLになっていますか?それともSDL_DisplayFormatですか? – Bart