gpt4 book ai didi

window - 关闭 SDL 窗口而不退出 SDL

转载 作者:行者123 更新时间:2023-12-04 18:14:09 27 4
gpt4 key购买 nike

我正在使用 SDL1.2 在我的 openGL 框架中处理窗口管理。

程序运行时是否可以在不调用 SDL_Quit() 的情况下破坏窗口(表面)? ?

背景:我的框架实际上只是多媒体环境中的一个 gfx 组件(可能是许多此类 gfx 组件)。我无法对其他组件的用途做出任何假设(例如,它们是否使用 SDL)。恐怕打电话SDL_Quit()会对其他组件产生副作用。

目前我正在做类似的事情:

SDL_Surface m_surface=0;

bool create_window() {
int videoFlags = SDL_OPENGL;
if(m_surface) {
pritnf("window already made\n");
return false;
}
if(SDL_Init(SDL_INIT_VIDEO) < 0 ) {
pritnf("unable to initialize SDLn");
return false;
}
m_surface = SDL_SetVideoMode(WIDTH, HEIGHT, BPP, videoFlags);

return(m_surface!=0);
}

bool destroy_window() {
if(m_surface) {
SDL_Quit();
}
m_surface=0;
}

两个 create_window()destroy_window()应该在应用程序的生命周期中被多次调用。
但是,调用 SDL_Init() 感觉很奇怪和 SDL_Quit()多次。

顺便说一句,我现在正在使用 linux,但我的目标是跨平台(至少 linux、osx、w32)

最佳答案

我认为这在 SDL 1.2 中是不可能的,屏幕表面具有特殊状态,只有 SDL_Quit()可以删除。您可以尝试使用SDL_QuitSubSystem()仅关闭视频部分,然后 SDL_InitSubSystem()恢复它,但我不确定它会起作用(我现在无法测试)。

另一方面,使用带有 SDL_CreateWindow() 的 SDL 2.0 看起来很容易。和 SDL_DestroyWindow() .

无论哪种方式,您都需要将初始化( SDL_Init() )与窗口创建分开,并将清理( SDL_Quit() )与窗口破坏分开。

关于window - 关闭 SDL 窗口而不退出 SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com