我正在将一个小型图形引擎从DirectX 9移植到OpenGL。引擎使用SDL(现在移植到2.0)来管理输入和窗口创建。
我想知道如何正确处理OpenGL和DirectX的窗口事件。我对桌面平台(linux,OSX和windows)
感兴趣我试图通过网络搜索,但信息并没有集中在一个地方。我想其他许多人之前也遇到过同样的问题。
是否有资源可以阅读有关我的引擎处理方式的指导原则? 是否可以处理分辨率更改而不会丢失传输资源到OpenGL和DirectX中的渲染器系统?
答案 0 :(得分:3)
- 窗口分辨率更改</ li>
OpenGL本身不需要特殊处理。不幸的是,SDL经历了全窗口重新初始化,包括窗口大小更改时的OpenGL上下文,这意味着所有OpenGL状态对象(即纹理,顶点缓冲区,着色器等)都将丢失。
然而,这是SDL的限制。
我个人更喜欢GLFW来创建OpenGL窗口和上下文。您仍然可以将SDL用于其他方面(如音频,网络,图像加载等)。
- 全屏到窗口/窗口到全屏处理
实际上也是窗口大小的变化。见上文。
- Alt +标签处理 -
OpenGL不需要特别的努力。当Alt + Tab-out出来并停止游戏循环时,只需最小化窗口。当窗口恢复时,只需继续游戏循环。