1

我正在为 gui 玩 nana 库。

我也必须使用opengl,但是opengl 有一个例子,它适用于windows。 关联

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

我终于找到了。

根窗口附加到 OS/Windowing 系统原生窗口,native_handle 返回原生窗口的句柄。在某个系统中,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),我可以openglnana库上实现吗?

4

1 回答 1

1

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

  • 一种像素格式,描述颜色大小、Z 缓冲区大小、多重采样等。在 Windows 中,您需要wglChoosePixelFormatARB. 在 Linux 中, glXChooseFBConfig.
  • 一个上下文。在 Windows 中wglCreateContextAttribsARB需要 a HDC,在 Linux中glXCreateContextAttribsARBa Display与窗口不同。
  • 如何将上下文设置为当前。
  • 如何“交换缓冲区”。

您可以在此处此处了解更多信息。
如果您找到 OpenGL 版本 < 3.2 的有关这些问题的文档,请不要使用它。坚持“现代” OpenGL。

问题nana在于您链接的示例似乎适用于 Windows(但旧 OGL)。没有任何关于 Linux 的介绍。我认为您应该深入研究nana它返回的源代码native_handle()。更好的是,您更愿意在其论坛中提问。

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

于 2018-05-26T19:20:32.247 回答