如何将 opengl 用于 nana c++ 库?

how to use opengl for nana c++ library?

我在 gui 的 nana 库上玩。

我也必须使用opengl,但是有一个opengl的例子,是为windows准备的。 Link

我正在使用 ubuntu linux。上面的示例调用 reinterpret_cast<HWND>(fm.native_handle());

终于找到了

根 window 附加到 OS/Windowing 系统原生 window,native_handle returns 原生 window 的句柄。 在某些系统中,native_window_type可以转换成系统原生句柄类型。

auto reinterpret_cast<HWND>(root_widget.native_handle()); //Windows
auto reinterpret_cast<Window>(root_widget.native_handle()); //Linux/X11

我可能会在 HWND、Window 之间得到提示。

如果我使用 Window(X11),我可以在 nana 库上实现 opengl 吗?

要创建一个使用 OpenGL 的应用程序,您需要非常非常简单,至少需要四件事:

  • 一种像素格式,描述颜色大小、Z 缓冲区大小、多重采样、 等 Windows 你需要 wglChoosePixelFormatARB。在Linux, glXChooseFBConfig.
  • 上下文。在 Windows wglCreateContextAttribsARB 需要一个 HDC 而在 Linux glXCreateContextAttribsARB 中需要一个 Display,这与 window.
  • 不同
  • 如何将上下文设置为当前。
  • 如何"swap buffers".

您可以了解更多 here and here
如果您找到有关这些问题的 OpenGL 版本 < 3.2 的文档,请不要使用它。坚持 "modern" OpenGL。

nana 的问题是您链接的示例似乎适用于 Windows(但旧 OGL)。 Linux 什么都没有说。我认为您应该深入研究 nana 的源代码,在 native_handle() 上搜索它 returns 的内容。最好在其论坛中提问。

我上面展示的函数不是直接可用的,你必须查询它们的函数指针。
许多现代 OGL 函数还需要检索它们的函数指针。参见 the wiki