查看源代码 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
窗口不同的窗口。如果 RC
是 wxGLContext
类型的对象,则语句 "RC.SetCurrent(win);"
和 "win.SetCurrent(RC);"
是等效的,请参阅 wxGLCanvas:setCurrent/2
。