SDL 창에 이미지를 표시하는 데 어려움을 겪고 있으며 내가 잘못하고있는 것이 확실하지 않습니다. 코드가 잘 컴파일되고 이미지가 내 .exe와 함께 디버그 폴더에 저장되었으므로 표시되지 않는 이유는 확실하지 않습니다. 사소한 문제가 있습니까? 디버거에서 코드를 단계별로 각 단계에서 리턴 값을 검사하는 경우C++/SDL2에서 .bmp 이미지 표시
#include <iostream>
#include <stdio.h>
#include <SDL.h>
#undef main
using namespace std;
const int screenWidth = 640;
const int screenHeight = 480;
int main(int argc, char* args[]) {
SDL_Window* window = SDL_CreateWindow("Game", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, screenWidth, screenHeight, SDL_WINDOW_SHOWN);
SDL_Surface* image = SDL_LoadBMP("image.bmp");
SDL_Renderer* render = SDL_CreateRenderer(window, -1, 0);
SDL_Texture* texture1 = SDL_CreateTextureFromSurface(render, image);
SDL_RenderCopy(render, texture1, NULL, NULL);
SDL_RenderPresent(render);
SDL_UpdateWindowSurface(window);
SDL_Delay(5000);
SDL_DestroyTexture(texture1);
SDL_DestroyRenderer(render);
SDL_FreeSurface(image);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
'이미지'값은 무엇입니까? NULL이라면'SDL_GetError()'는 무엇이라고 말합니까? 상대 경로는 '.exe folder'가 아닌 현재 작업 디렉토리와 관련이 있습니다. 이는 상당히 다른 작업 일 수 있습니다. 이미 렌더러를 사용하고 있기 때문에'SDL_UpdateWindowSurface'를 제거해야하고 그것과 서페이스를 결합 할 수 없습니다. 마지막으로, 최소한 윈도우 이벤트에 대해 렌더링 루프 및 다시 그리기를 수행합니다 (또는 더 간단하게 무조건 다시 그리기). 한번 그리기와 수면은 사물을 표시하는 방법이 아닙니다. – keltar
리눅스에서는 @keltar가 도움이 될 [SDL_GetError] (https://wiki.libsdl.org/SDL_GetError)를 작성 했으므로 코드는 정상적으로 작동합니다. 어쩌면 이미지 파일 형식의 무엇인가? – Alex