SDL\OpenGL Window & Widget 库的设计问题
Posted
技术标签:
【中文标题】SDL\\OpenGL Window & Widget 库的设计问题【英文标题】:Design question for an SDL\OpenGL Window & Widget librarySDL\OpenGL Window & Widget 库的设计问题 【发布时间】:2009-07-30 15:06:37 【问题描述】:我想为在 SDL 之上运行的 OpenGL 设计和实现一个简单的窗口和小部件,就像 Agar 或 GiGi,只是更接近于 SDL 和 OpenGL。
我的一般问题是:在 OpenGL 上下文中 的窗口系统的最佳设计是什么??
我希望拥有仅用于控件的窗口,如果可能的话,我希望拥有带有自己的 OpenGL 上下文的线程化窗口。我认为它甚至可能的唯一方法是渲染纹理,然后他们在这些纹理周围添加窗口装饰......
我想向其他程序员公开这些工作原理,但哪种方式最好。我更像是一个 C++ 程序员,所以继承是我想到的第一种方式。创建我在共享头文件中公开的基本类,然后程序员从中派生他们自己的窗口对象,覆盖 Init() 或 Run() 方法来实现他们需要的东西。这种方法的问题是要控制程序员,没有真正的方法可以“阻止”他们在 OpenGL 屏幕中简单地绘制他们想要的任何位置。
另一种可能的方法是仿函数,将程序员想要使用的仿函数传递到库中,然后在完成渲染它的 GUI 组件后调用它。
解决这些问题的最佳方法是什么??
【问题讨论】:
【参考方案1】:具有自己的 OpenGL 上下文的窗口
这需要破解 SDL,因为它只为每个进程提供一个上下文。除非您正在考虑使用多个独立的子视口按顺序呈现的单个 GL 上下文。
【讨论】:
这是一个很好的观点,我并没有真正想到搞乱 SDL 本身。视口工作,除了在库外移交绘图。我正在考虑更多地为用户“渲染表面”使用帧缓冲区对象,然后只是为窗口添加一些装饰的四边形。以上是关于SDL\OpenGL Window & Widget 库的设计问题的主要内容,如果未能解决你的问题,请参考以下文章