首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭SDL -窗口而不退出SDL

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

Stack Overflow用户
提问于 2012-08-21 15:36:50
回答 1查看 5.8K关注 0票数 2

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

有没有可能在程序运行时不调用SDL_Quit()就销毁一个窗口(表面)?

背景:我的框架实际上只是多媒体环境中的一个gfx组件(可能有许多这样的gfx组件)。我不能对其他组件做什么做任何假设(例如,它们是否使用SDL)。我担心调用SDL_Quit()会对其他组件产生副作用。

目前我正在做一些类似这样的事情:

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-21 17:30:02

我认为这在SDL1.2中是不可能的,屏幕表面有一个特殊的状态,只有SDL_Quit()可以删除它。你可以尝试使用SDL_QuitSubSystem()关闭视频部分,然后使用SDL_InitSubSystem()恢复它,但我不确定它是否可以工作(我现在不能测试它)。

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

无论采用哪种方法,您都需要将初始化(SDL_Init())与窗口创建分开,并将清理(SDL_Quit())与窗口销毁分开。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12050234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档