调整 SDL2 窗口的大小
Resize SDL2 window?
刚刚从 SDL1.2 跳到 SDL2,一直在转换我的代码,但无法弄清楚如何调整窗口大小。这是我现在拥有的代码:
SDL_DestroyWindow(Window);
Window = SDL_CreateWindow("Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, ScreenSizeX, ScreenSizeY, SDL_WINDOW_SHOWN);
screen = SDL_GetWindowSurface(Window);
如您所见,它只会破坏窗口并创建一个新窗口。马虎,但它有效。我想要的只是调整窗口大小,可以吗?
我相信
您可以在SDL_CreateWindow中使用 SDL_WINDOW_RESIZABLE 标志来调整窗口大小。
你可以看看维基文档: SDL_SetWindowSize
要在 SDL 中调整窗口大小,请先使用标志 SDL_WINDOW_RESIZABLE
设置它,然后在开关中检测调整窗口大小事件,最后调用以下方法SDL_SetWindowSize(m_window, windowWidth, windowHeight)
和glViewport(0, 0, windowWidth, windowHeight)
。
在 switch
中,如果只需要窗口的最终大小,请使用标志SDL_WINDOWEVENT_RESIZED
,如果需要第一个和最终之间的所有大小,请使用SDL_WINDOWEVENT_SIZE_CHANGED
。
最后,使用新的窗口宽度和高度更新您自己的相机。
m_window = SDL_CreateWindow("INCEPTION",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
m_windowWidth, m_windowHeight,
SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
switch (m_event.type) {
case SDL_WINDOWEVENT:
if (m_event.window.event == SDL_WINDOWEVENT_RESIZED) {
logFileStderr("MESSAGE:Resizing window...n");
resizeWindow(m_event.window.data1, m_event.window.data2);
}
break;
default:
break;
}
void InceptionServices::resizeWindow(int windowWidth, int windowHeight) {
logFileStderr("MESSAGE: Window width, height ... %d, %dn", windowWidth, windowHeight);
m_camera->resizeWindow(windowWidth, windowHeight);
glViewport(0, 0, windowWidth, windowHeight);
}
Window = SDL_CreateWindow(
"Test",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
ScreenSizeX,
ScreenSizeY,
SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE
);
使用此函数调用
相关文章:
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 在C++中的SDL2窗口上显示.bmp时出现问题
- 将 SDL2 窗口设置为特定显示
- 如何在SDL2窗口上使用Cairo绘制一条白色直线
- 在鼠标按下时移动 SDL2 窗口的功能闪烁窗口并且移动速度不够快
- SDL2 窗口在失焦时不起作用
- SDL2 OpenGL窗口立即关闭
- 无法从窗口获取 SDL2 事件
- 初始化 bgfx 时遇到问题(使用 sdl2 窗口)
- Linux中的SDL2空透明窗口
- 尝试打开 SDL2 窗口时与 D-Bus 相关的运行时崩溃
- SDL2切换全屏:窗口位置重置
- SDL2 无法创建窗口,因为它找不到匹配的 GLX 视觉对象
- SDL2在不同线程中的两个窗口
- 调整 SDL2 窗口的大小
- 创建一个包含矩形的窗口,其中包含一个带有 C++ 和 SDL2 的矩形
- SDL2 中的全局窗口
- SDL2:如何提高窗口(在主叫终端的顶部)
- SDL2在Fedora 21中调整大小bug,但在窗口中很好
- SDL2:如何在调整窗口大小时保持纵横比