如何使用 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_contextwglCreateContext 来创建一个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 上下文?的主要内容,如果未能解决你的问题,请参考以下文章

fltk 1.3 库中的 graph.h 在哪里?

FLTK + OpenGL - 未绘制矩形

opengl 中的透明度(使用 FLTK)

使用 g++ 编译使用 fltk 和 OpenGL 的文件在 MacO 上会出错

fltk:无法解析 GlutWindow

在 Eclipse 中构建 FLTK 项目