使用OpenGL和DirectX进行SDL窗口管理

时间:2012-06-29 08:32:03

标签: opengl directx sdl sdl-2

我正在将一个小型图形引擎从DirectX 9移植到OpenGL。引擎使用SDL(现在移植到2.0)来管理输入和窗口创建。

我想知道如何正确处理OpenGL和DirectX的窗口事件。我对桌面平台(linux,OSX和windows)

感兴趣
  • 窗口分辨率更改<​​/ li>
  • 全屏到窗口/窗口到全屏处理
  • Alt +标签处理 -

我试图通过网络搜索,但信息并没有集中在一个地方。我想其他许多人之前也遇到过同样的问题。

是否有资源可以阅读有关我的引擎处理方式的指导原则? 是否可以处理分辨率更改而不会丢失传输资源到OpenGL和DirectX中的渲染器系统?

1 个答案:

答案 0 :(得分:3)

  
      
  • 窗口分辨率更改<​​/ li>   

OpenGL本身不需要特殊处理。不幸的是,SDL经历了全窗口重新初始化,包括窗口大小更改时的OpenGL上下文,这意味着所有OpenGL状态对象(即纹理,顶点缓冲区,着色器等)都将丢失。

然而,这是SDL的限制。

我个人更喜欢GLFW来创建OpenGL窗口和上下文。您仍然可以将SDL用于其他方面(如音频,网络,图像加载等)。

  
      
  • 全屏到窗口/窗口到全屏处理
  •   

实际上也是窗口大小的变化。见上文。

  
      
  • Alt +标签处理 -
  •   

OpenGL不需要特别的努力。当Alt + Tab-out出来并停止游戏循环时,只需最小化窗口。当窗口恢复时,只需继续游戏循环。