1
다음은 SDL을 사용하여 이미지를로드하는 단계입니다.SDL이 창 크기를 설정 한 후 전체 창에 렌더링되지 않습니다.
- 필요한 크기로 크기를 조정
SDL_SetWindowSize
를 사용 후, 예를 들어800x600
을IMG_LoadTexture
- 쿼리 텍스처 정보와 이미지에서 텍스처를 생성하고 텍스처 치수를 얻을, 예를 들어
100x100
- 을 창을 만들고 기본 크기로 렌더링
- 렌더링 수행
결과적으로 SDL은 100x100
영역에만 렌더링됩니다. 창이 생성되고 다른 부분은 렌더링되지 않습니다.
SDL_SetWindowSize
이후에 전체 창으로 SDL을 렌더링하려면 어떻게해야합니까?
은 다음은 프레임 만 루프 전에 한 번 렌더링하기 때문에 당신은 업데이트 된 렌더링을 볼 수 없습니다 내 샘플 코드
#include <iostream>
#include <SDL_image.h>
#include "SDL.h"
int main(int argc, char *argv[])
{
SDL_Window* sdlWindow;
SDL_Renderer* sdlRenderer;
SDL_CreateWindowAndRenderer(100, 100, 0, &sdlWindow, &sdlRenderer);
IMG_Init(IMG_INIT_JPG);
SDL_Texture* sdlTexture = IMG_LoadTexture(sdlRenderer, "test-wallpaper-800x600.jpg");
Uint32 format;
int access, w, h;
if (SDL_QueryTexture(sdlTexture, &format, &access, &w, &h) == 0) {
SDL_SetWindowSize(sdlWindow, w, h);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
SDL_RenderSetLogicalSize(sdlRenderer, w, h);
}
SDL_RenderClear(sdlRenderer);
SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
SDL_RenderPresent(sdlRenderer);
SDL_Event sdlEvent;
while (SDL_WaitEvent(&sdlEvent)) {
if (sdlEvent.type == SDL_WINDOWEVENT
&& sdlEvent.window.event == SDL_WINDOWEVENT_CLOSE) {
break;
}
if (sdlEvent.type == SDL_KEYDOWN
&& sdlEvent.key.keysym.sym == SDLK_ESCAPE) {
break;
}
}
SDL_DestroyRenderer(sdlRenderer);
SDL_DestroyWindow(sdlWindow);
return 0;
}