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 库的设计问题的主要内容,如果未能解决你的问题,请参考以下文章

SDL2+OpenGL 绘制立体图形

SDL2+OpenGL 绘制多边形

SDL2+OpenGL 混合图像产生动态效果

SDL_Renderer opengl 冲突

SDL/opengl 多重采样不起作用

如何用c语言播放同一文件夹里的图片