要在 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, %d\n", windowWidth, windowHeight);
m_camera->resizeWindow(windowWidth, windowHeight);
glViewport(0, 0, windowWidth, windowHeight);
}