如何将 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
我在 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
而在 LinuxglXCreateContextAttribsARB
中需要一个Display
,这与 window. 不同
- 如何将上下文设置为当前。
- 如何"swap buffers".
您可以了解更多 here and here。
如果您找到有关这些问题的 OpenGL 版本 < 3.2 的文档,请不要使用它。坚持 "modern" OpenGL。
nana
的问题是您链接的示例似乎适用于 Windows(但旧 OGL)。 Linux 什么都没有说。我认为您应该深入研究 nana
的源代码,在 native_handle()
上搜索它 returns 的内容。最好在其论坛中提问。
我上面展示的函数不是直接可用的,你必须查询它们的函数指针。
许多现代 OGL 函数还需要检索它们的函数指针。参见 the wiki