设置窗口大小后,SDL无法呈现到整个窗口

阿里扬德罗

这是我使用SDL加载图像的步骤。

  1. 创建窗口并使用默认大小进行渲染,例如 100x100
  2. 从图像创建纹理 IMG_LoadTexture
  3. 查询纹理信息并获取纹理尺寸,例如800x600,然后用于SDL_SetWindowSize将尺寸调整为所需的尺寸
  4. 执行渲染

结果是,100x100当创建窗口时,SDL仅渲染到该区域,而其他部分则不渲染。

之后如何使SDL渲染到全窗口SDL_SetWindowSize

下面是我的示例代码

#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;
}
迈耶

您看不到更新的渲染,因为您只在帧循环之前渲染了一次。要解决此问题,请将渲染移入帧循环,如下所示:

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;
    }

    // Render here
    SDL_RenderClear(sdlRenderer);
    SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
    SDL_RenderPresent(sdlRenderer);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果设置了窗口大小,ChromeDriver屏幕截图无法显示整个文档吗?

来自分类Dev

NSWindow contentView无法覆盖整个窗口大小-macOS和SwiftUI

来自分类Dev

升级到17.04后,tint2无法调整窗口大小

来自分类Dev

设置xlsxwriter的窗口大小

来自分类Dev

设置主窗口的大小

来自分类Dev

无法调整窗口大小

来自分类Dev

无法放大窗口大小

来自分类Dev

无法调整窗口大小

来自分类Dev

无法调整窗口大小

来自分类Dev

设置全局代理设置后无法刷新窗口

来自分类Dev

第一次后无法更改窗口大小

来自分类Dev

调整窗口大小后,轮播无法正常工作

来自分类Dev

调整SDL2窗口大小?

来自分类Dev

调整SDL2窗口的大小?

来自分类Dev

无法在 VT100 仿真下设置窗口大小

来自分类Dev

对话框无法设置宽度窗口的大小

来自分类Dev

升级到 Ubuntu 19.10 后,我在调整窗口大小或拖动窗口时看到问题

来自分类Dev

设置Cygwin终端窗口的大小

来自分类Dev

如何设置窗口的大小限制?

来自分类Dev

重新缩放整个面板以适合窗口大小

来自分类Dev

设置特定大小后,在窗口调整大小事件中,Highcharts图表调整大小

来自分类Dev

设置特定大小后,在窗口调整大小事件中高图表图表调整大小

来自分类Dev

剑道窗口提交后呈现为整页

来自分类Dev

无法调整Matplotlib窗口的大小

来自分类Dev

JSFiddle窗口无法调整大小

来自分类Dev

无法调整Gedit窗口的大小

来自分类Dev

tinyMCE不呈现到弹出窗口

来自分类Dev

无法从窗口获取 SDL2 事件

来自分类Dev

窗口ResizeMode绑定到设置