檢視原始碼 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, [])

建構子。

使用 wxGLCanvas win 將此渲染上下文所代表的 OpenGL 狀態設為當前。

類型

-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().

使用 wxGLCanvas win 將此渲染上下文所代表的 OpenGL 狀態設為當前。

注意:win 可以是與傳遞給此渲染上下文的建構子的 wxGLCanvas 視窗不同的視窗。如果 RCwxGLContext 類型的物件,則語句 "RC.SetCurrent(win);""win.SetCurrent(RC);" 是等效的,請參閱 wxGLCanvas:setCurrent/2