查看源代码 wxGLContext (wx v2.4.3)

wxGLContext 的实例表示 OpenGL 状态机的状态以及 OpenGL 和系统之间的连接。

OpenGL 状态包括可以使用 OpenGL API 设置的所有内容:颜色、渲染变量、缓冲区数据 ID、纹理对象等。可以使多个渲染上下文共享缓冲区数据和纹理。当应用程序使用多个线程将数据更新到显卡的内存时,此功能特别有用。

是仅使用一个渲染上下文并将其绑定到多个输出窗口,还是每个窗口都有其自己的绑定上下文,这是开发人员的决定。重要的是要考虑到 GPU 制造商可能会为不同的上下文设置指向同一 OGL 函数的不同指针。从 OGL 驱动程序检索这些指针的方式应再次用于每个新的上下文。

但是,只有当两个 wxGLCanvas 实例都使用相同的属性创建时,将渲染上下文绑定(设置为当前)到另一个 wxGLCanvas 实例才有效。

OpenGL 版本 3 引入了一种新的规范配置文件类型,即现代核心配置文件。旧的兼容性配置文件保留了所有遗留功能。从 wxWidgets 3.1.0 开始,您可以选择上下文的类型,甚至可以请求指定的 OGL 版本号。但是,建议仅使用核心配置文件,因为兼容性配置文件可能会运行得稍慢。

OpenGL 核心配置文件规范在上下文创建时定义了几个标志,这些标志不仅确定了上下文的类型,还确定了一些功能。这些标志中的一些可以在 wxGLCanvas 构造函数中使用的属性列表中设置。但是,从 wxWidgets 3.1.0 开始,强烈建议使用新机制:使用 wxGLContextAttrs (在 wx 中未实现) 对象设置上下文属性,并使用 wxGLAttributes (在 wx 中未实现) 对象设置画布属性。

了解您的 OpenGL 环境是否支持特定类型的上下文的最佳方法是创建一个 wxGLContext 实例并检查 isOK/1。如果它返回 false,则只需删除该实例并使用其他属性创建一个新实例。

wxHAS_OPENGL_ES 定义在仅提供此实现(例如 iPhone)且不支持完整规范的平台上。

请参阅: wxGLCanvas

wxWidgets 文档: wxGLContext

摘要

函数

销毁对象

检查底层 OpenGL 渲染上下文是否已由系统使用请求的属性正确创建。

等效于 new(Win, [])

构造函数。

使此渲染上下文表示的 OpenGL 状态与 wxGLCanvas win 一起成为当前状态。

类型

-type wxGLContext() :: wx:wx_object().

函数

-spec destroy(This :: wxGLContext()) -> ok.

销毁对象

-spec isOK(This) -> boolean() when This :: wxGLContext().

检查底层 OpenGL 渲染上下文是否已由系统使用请求的属性正确创建。

如果此函数返回 false,则 wxGLContext 对象将无用,应删除并使用不同的属性重新创建。

自:3.1.0

-spec new(Win) -> wxGLContext() when Win :: wxGLCanvas:wxGLCanvas().

等效于 new(Win, [])

-spec new(Win, [Option]) -> wxGLContext()
             when Win :: wxGLCanvas:wxGLCanvas(), Option :: {other, wxGLContext()}.

构造函数。

-spec setCurrent(This, Win) -> boolean() when This :: wxGLContext(), Win :: wxGLCanvas:wxGLCanvas().

使此渲染上下文表示的 OpenGL 状态与 wxGLCanvas win 一起成为当前状态。

注意:win 可以是与传递给此渲染上下文构造函数的 wxGLCanvas 窗口不同的窗口。如果 RCwxGLContext 类型的对象,则语句 "RC.SetCurrent(win);""win.SetCurrent(RC);" 是等效的,请参阅 wxGLCanvas:setCurrent/2