如何使用 fltk 1.3 创建 opengl 3.x 或 4.x 上下文?
Posted
技术标签:
【中文标题】如何使用 fltk 1.3 创建 opengl 3.x 或 4.x 上下文?【英文标题】:how to create opengl 3.x or 4.x context with fltk 1.3? 【发布时间】:2012-07-19 08:52:54 【问题描述】:我正在考虑将我的一个软件从 opengl 2.1 移植到现代版本(3.x 或 4.x)。
GUI 是用 fltk 设计的,包括一个 FL_GL_Window,我在其中进行所有渲染。现在我的问题是我不明白如何为这个窗口指定 opengl 上下文。
如果我要使用 SDL 创建 OpenGL 上下文,我可以使用类似的东西: SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
fltk 有类似的东西吗?还是只能处理 Opengl 2.1?
【问题讨论】:
【参考方案1】:FLTK 1.1 和 FLTX 2.0 的窗口创建函数都不允许创建 core OpenGL 上下文。您仍然可以创建 2.1 后版本的 compatibility context(虽然不是在 MacOSX 上,它们只提供核心 OpenGL)。
【讨论】:
【参考方案2】:我想你可以使用WGL_ARB_create_context
或wglCreateContext
来创建一个OpenGL 上下文,然后你可以使用Fl_GL_Window 的void context (void *, int destroy_flag=0) 方法来设置上下文。当然,你必须小心创造。幸运的是,FLTK 将能够为您提供有关 DC 的详细信息,以便您可以创建有效的 OpenGL 上下文。此外,您可以使用void* context()
方法获取 FLTK 正在使用的 OpenGL 上下文的点。
【讨论】:
好的,所以上下文必须在 FLTK 之外创建,对吧?我将不得不为不同的系统(Windows 和 Linux)以不同的方式创建它。 应该为你创建默认的(通过 Fl_GL_window),如果你想要别的东西,你必须自己做它看起来。对我来说很有意义(我不是 OpenGL 专家)...以上是关于如何使用 fltk 1.3 创建 opengl 3.x 或 4.x 上下文?的主要内容,如果未能解决你的问题,请参考以下文章