SDL2 - 全屏不拉伸图像

时间:2016-12-31 03:29:20

标签: c sdl-2

我有一个用C编写的SDL2游戏项目,它具有全屏功能,使用

SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP)

然后允许在所有全屏幕窗口上绘图。

然而,我从直接渲染切换到窗口,然后渲染成一个纹理,然后在屏幕上渲染。

void initGFX(void) {
  // (SNIP)
  framebuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_UNKNOWN, SDL_TEXTUREACCESS_TARGET, WINDOW_WIDTH, WINDOW_HEIGHT); // WINDOW_WIDTH and _HEIGHT are constants, the non-fullscreen window having these sizes.
  // (SNIP)
}

void renderPresent(void) {
  SDL_RenderPresent(renderer);
  SDL_SetRenderTarget(renderer, NULL); // renderer has "SDL_RENDERER_TARGETTEXTURE"
  SDL_RenderClear(renderer);
  SDL_RenderCopy(renderer, framebuffer, NULL, NULL);
  SDL_RenderPresent(renderer);
  SDL_SetRenderTarget(renderer, framebuffer);
}

在窗口模式下,这不会导致任何图形错误,但在全屏幕中,纹理在左上角以1:1呈现。

SDL_WINDOW_FULLSCREEN即使使用SDL_SetWindowDisplayMode使.w和.h与桌面分辨率匹配,也不允许在整个屏幕上绘图。

0 个答案:

没有答案