【发布时间】:2012-08-21 07:36:49
【问题描述】:
我正在使用 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)
【问题讨论】: