2016-04-14 15 views
-1

ile bir resim yükleyemiyorum SDL 2.0 Visual Studio 2013 ile 2d oyunları yapmaya karar verdim. Pencereyi oluşturdum, ancak png veya jpg görüntüsü yüklemeye çalıştığımda işe yaramıyor. Kodu değiştirmeye çalıştım ama hiçbir şey işe yaramadı. Umarım yardımcı olabilirsiniz, çok takdir edersiniz.SDL 2.0

SDL_Window* g_pWindow=0; 
SDL_Renderer* g_pRenderer=0 ; 


int main(int argc, char* args[]){ 

bool quit = false; 

SDL_Init(SDL_INIT_VIDEO); 

SDL_Window* window = NULL; 
window = SDL_CreateWindow("SDLGAME", 
    100, 100, 600, 400 
    , SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE 
    ); 

if (window== NULL){ 

    cout << "error. Window couldn't be created" << endl; 
    return 0; //close the program 
    } 

SDL_Renderer* renderer=NULL; 

renderer = SDL_CreateRenderer(window, -1,  SDL_RENDERER_SOFTWARE|SDL_RENDERER_ACCELERATED|SDL_RENDERER_TARGETTEXTURE); 

SDL_Event* MainEvent = new SDL_Event(); 


SDL_Texture *picture_image = NULL; 
picture_image = IMG_LoadTexture(renderer, "background.png"); 

SDL_Rect picture_rect; 

picture_rect.x = 10; 
picture_rect.y = 50; 
picture_rect.w = 250; 
picture_rect.h = 250; 

while (!quit && MainEvent->type != SDL_QUIT) 
{            
    SDL_PollEvent(MainEvent); 


    SDL_RenderCopy(renderer, picture_image, NULL, &picture_rect); 

    SDL_RenderClear(renderer); 

    SDL_RenderPresent(renderer); 
     } 

SDL_DestroyWindow(window); 
SDL_DestroyRenderer(renderer); 
delete MainEvent; 


return 0; 
} 
+0

SDL_image bunu initialize gerektirir. IMG_Init (IMG_INIT_JPG | IMG_INIT_PNG) 'yi kullanın. Bu yardımcı olur mu bakın! – Poriferous

cevap

0

Sen SDL_RenderCopy önce SDL_RenderClear() çağırmalıdır():

İşte benim kodudur.

Aşağıdaki C kodu çalışır:

#include <SDL.h> 
#include <SDL_image.h> 

int main(int argc, char* args[]){ 
    SDL_Init(SDL_INIT_VIDEO); 
    SDL_Window *window = SDL_CreateWindow("SDLGAME", 100, 100, 600, 400 , 0); 
    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0); 
    SDL_Texture *picture_image = IMG_LoadTexture(renderer, "game.png"); 
    SDL_Rect picture_rect = {10,50,250,250}; 
    SDL_Event evt; 
    while(1) { 
     if(!SDL_PollEvent(&evt)) continue; 
     if(evt.type == SDL_QUIT) break; 
     SDL_RenderClear(renderer); 
     SDL_RenderCopy(renderer, picture_image, NULL, &picture_rect); 
     SDL_RenderPresent(renderer); 
    } 
    SDL_DestroyWindow(window); 
    SDL_DestroyRenderer(renderer); 
    return 0; 
}