我與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,這顯然是訪問不存在的值。在這種情況下,背景爲w和h,因爲背景爲NULL,即使它不應該是
是編譯錯誤或運行時錯誤? –
我編輯了我的問題。它的運行時錯誤 – calccrypto
所以錯誤是在open_image?從哪裏來? SDL_LoadBMP已經導致NULL還是SDL_DisplayFormat? – Bart