檢視原始碼 gl (wx v2.4.3)
OpenGL 的 Erlang 包裝函式
標準 OpenGL API
本文檔以簡短版本記錄完整的 OpenGL 參考頁面。
摘要
函式
累積緩衝區是擴展範圍的色彩緩衝區。影像不會渲染到其中。相反地,渲染到其中一個色彩緩衝區的影像會在渲染後加入累積緩衝區的內容。透過累積使用不同轉換矩陣產生的影像,可以建立諸如反鋸齒(點、線和多邊形)、動態模糊和景深等效果。
gl:activeShaderProgram/2
將 Program
所命名的已連結程式設定為程式管線物件 Pipeline
的作用中程式。當沒有透過呼叫 gl:useProgram/1
將任何程式設為當前程式時,作用中程式管線物件中的作用中程式是呼叫 gl:uniform()
的目標。
gl:activeTexture/1
選擇後續紋理狀態呼叫會影響哪個紋理單元。實作支援的紋理單元數量取決於實作,但必須至少為 80。
alpha 測試會根據傳入片段的 alpha 值和常數參考值之間的比較結果,捨棄片段。gl:alphaFunc/2
指定參考值和比較函式。只有在啟用 alpha 測試時才會執行比較。預設情況下,它不會啟用。(請參閱 gl:enable/1
和 gl:disable/1
的 ?GL_ALPHA_TEST
。)
GL 會建立一組「工作集」的紋理,這些紋理駐留在紋理記憶體中。這些紋理可以比未駐留的紋理更有效率地繫結到紋理目標。
gl:arrayElement/1
命令在 gl:'begin'/1
/gl:'end'/0
配對內使用,以指定點、線和多邊形圖元的頂點和屬性資料。如果呼叫 gl:arrayElement/1
時啟用 ?GL_VERTEX_ARRAY
,則會繪製單一頂點,並使用從已啟用陣列的 I
位置取得的頂點和屬性資料。如果未啟用 ?GL_VERTEX_ARRAY
,則不會發生繪圖,但會修改與已啟用陣列對應的屬性。
為了建立完整的著色器程式,必須有一種方法可以指定將連結在一起的項目清單。程式物件提供此機制。要連結到程式物件中的著色器必須先附加到該程式物件。gl:attachShader/2
將 Shader
所指定的著色器物件附加到 Program
所指定的程式物件。這表示 Shader
將包含在將在 Program
上執行的連結作業中。
等同於 '\'end\''/0
。
gl:bindAttribLocation/3
用於將 Program
所指定的程式物件中使用者定義的屬性變數與一般頂點屬性索引建立關聯。使用者定義的屬性變數名稱以 null 終止字串的形式傳遞在 Name
中。要繫結到此變數的一般頂點屬性索引由 Index
指定。當 Program
成為目前狀態的一部分時,透過一般頂點屬性 Index
提供的值將修改 Name
所指定的使用者定義屬性變數的值。
gl:bindBuffer/2
將緩衝區物件繫結到指定的緩衝區繫結點。呼叫 gl:bindBuffer/2
,並將 Target
設定為其中一個接受的符號常數,並將 Buffer
設定為緩衝區物件的名稱,會將該緩衝區物件名稱繫結到目標。如果沒有名稱為 Buffer
的緩衝區物件存在,則會建立一個具有該名稱的物件。當緩衝區物件繫結到目標時,該目標的先前繫結會自動中斷。
gl:bindBufferBase/3
將緩衝區物件 Buffer
繫結到 Target
所指定目標陣列中索引 Index
的繫結點。每個 Target
代表緩衝區繫結點的索引陣列,以及一個單一一般繫結點,其他緩衝區操作函式(例如 gl:bindBuffer/2
或 glMapBuffer
)可以使用此繫結點。除了將 Buffer
繫結到索引緩衝區繫結目標之外,gl:bindBufferBase/3
也會將 Buffer
繫結到 Target
所指定的一般緩衝區繫結點。
gl:bindBufferRange/5
將以 Offset
和 Size
表示的緩衝區物件 Buffer
的範圍繫結到 Target
所指定目標陣列中索引 Index
的繫結點。每個 Target
代表緩衝區繫結點的索引陣列,以及一個單一一般繫結點,其他緩衝區操作函式(例如 gl:bindBuffer/2
或 glMapBuffer
)可以使用此繫結點。除了將 Buffer
的範圍繫結到索引緩衝區繫結目標之外,gl:bindBufferRange/5
也會將該範圍繫結到 Target
所指定的一般緩衝區繫結點。
gl:bindBuffersBase/3
將一組 Count
緩衝區物件(其名稱在陣列 Buffers
中給定)繫結到從 Target
所指定目標陣列中索引 First
開始的 Count
個連續繫結點。如果 Buffers
為 ?NULL
,則 gl:bindBuffersBase/3
會取消繫結目前繫結到所參考繫結點的任何緩衝區。假設沒有產生錯誤,它等同於以下虛擬程式碼,它會呼叫 gl:bindBufferBase/3
,但 gl:bindBuffersBase/3
不會變更非索引 Target
除外
gl:bindBuffersRange/5
將一組 Count
範圍從緩衝區物件(其名稱在陣列 Buffers
中給定)繫結到從 Target
所指定目標陣列中索引 First
開始的 Count
個連續繫結點。Offsets
指定包含緩衝區中 Count
個起始偏移的陣列位址,而 Sizes
指定包含範圍 Count
個大小的陣列位址。如果 Buffers
為 ?NULL
,則會忽略 Offsets
和 Sizes
,且 gl:bindBuffersRange/5
會取消繫結目前繫結到所參考繫結點的任何緩衝區。假設沒有產生錯誤,它等同於以下虛擬程式碼,它會呼叫 gl:bindBufferRange/5
,但 gl:bindBuffersRange/5
不會變更非索引 Target
除外
gl:bindFragDataLocation/3
明確指定將使用者定義的變動輸出變數 Name
繫結到程式 Program
的片段著色器色彩編號 ColorNumber
。如果 Name
先前已繫結,則其指定的繫結會取代為 ColorNumber
。Name
必須是以 null 終止的字串。ColorNumber
必須小於 ?GL_MAX_DRAW_BUFFERS
。
gl:bindFragDataLocationIndexed/4
指定在下次連結程式時,Program
中的變動輸出變數 Name
應繫結到片段色彩 ColorNumber
。Index
可以是零或一,分別指定該色彩用作混合方程式的第一個或第二個色彩輸入。
gl:bindFramebuffer/2
將名稱為 Framebuffer
的畫面緩衝區物件繫結到 Target
所指定的畫面緩衝區目標。Target
必須是 ?GL_DRAW_FRAMEBUFFER
、?GL_READ_FRAMEBUFFER
或 ?GL_FRAMEBUFFER
。如果畫面緩衝區物件繫結到 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
,它會分別成為渲染或讀回操作的目標,直到刪除它或將另一個畫面緩衝區繫結到對應的繫結點。使用設定為 ?GL_FRAMEBUFFER
的 Target
呼叫 gl:bindFramebuffer/2
會將 Framebuffer
繫結到讀取和繪製畫面緩衝區目標。Framebuffer
是先前從呼叫 gl:genFramebuffers/1
傳回的畫面緩衝區物件名稱,或是零以中斷現有的畫面緩衝區物件與 Target
的繫結。
gl:bindImageTexture/7
將紋理的單一層級綁定到影像單元,以便從著色器讀取和寫入。 Unit
指定要綁定紋理層級的影像單元的從零開始的索引。Texture
指定要綁定到影像單元的現有紋理物件的名稱。如果 Texture
為零,則會中斷任何現有對影像單元的綁定。Level
指定要綁定到影像單元的紋理層級。
gl:bindImageTextures/2
將現有紋理物件的陣列中的影像綁定到指定數量的連續影像單元。Count
指定陣列 Textures
中儲存的紋理物件名稱的數量。該數量的紋理名稱會從陣列中讀取,並綁定到從 First
開始的 Count
個連續紋理單元。如果名稱零出現在 Textures
陣列中,則會重設對影像單元的任何現有綁定。 Textures
中的任何非零項目都必須是現有紋理物件的名稱。當 Textures
中存在非零項目時,會綁定零層級的影像,該綁定會被視為分層的,第一層設定為零,並且該影像會被綁定以進行讀寫存取。影像單元格式參數取自紋理物件零層級影像的內部格式。對於立方體貼圖紋理,會使用零層級正 X 影像的內部格式。如果 Textures
為 ?NULL
,則相當於指定了一個僅包含零的適當大小的陣列。
gl:bindProgramPipeline/1
將程式管線物件綁定到目前的內容。Pipeline
必須是先前從呼叫 gl:genProgramPipelines/1
返回的名稱。如果沒有名稱為 Pipeline
的程式管線存在,則會建立一個具有該名稱的新管線物件,並初始化為預設狀態向量。
gl:bindRenderbuffer/2
將名稱為 Renderbuffer
的渲染緩衝區物件綁定到 Target
指定的渲染緩衝區目標。Target
必須為 ?GL_RENDERBUFFER
。Renderbuffer
是先前從呼叫 gl:genRenderbuffers/1
返回的渲染緩衝區物件的名稱,或零以中斷現有的渲染緩衝區物件與 Target
的綁定。
gl:bindSampler/2
將 Sampler
綁定到索引為 Unit
的紋理單元。Sampler
必須為零,或是先前從呼叫 gl:genSamplers/1
返回的取樣器物件的名稱。Unit
必須小於 ?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
的值。
gl:bindSamplers/2
將現有取樣器物件陣列中的取樣器綁定到指定數量的連續取樣器單元。Count
指定陣列 Samplers
中儲存的取樣器物件名稱的數量。該數量的取樣器名稱會從陣列中讀取,並綁定到從 First
開始的 Count
個連續取樣器單元。
gl:bindTexture/2
可讓您建立或使用已命名的紋理。呼叫 gl:bindTexture/2
時,將 Target
設定為 ?GL_TEXTURE_1D
、 ?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_BUFFER
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
,並將 Texture
設定為新紋理的名稱,會將紋理名稱綁定到目標。當紋理綁定到目標時,該目標的先前綁定會自動中斷。
gl:bindTextures/2
將現有紋理物件的陣列綁定到指定數量的連續紋理單元。Count
指定陣列 Textures
中儲存的紋理物件名稱的數量。該數量的紋理名稱會從陣列中讀取,並綁定到從 First
開始的 Count
個連續紋理單元。紋理的目標或類型是從紋理物件推斷出來的,並且每個紋理都會綁定到紋理單元的對應目標。如果名稱零出現在 Textures
陣列中,則會重設對紋理單元任何目標的任何現有綁定,並且會將該目標的預設紋理綁定到位。 Textures
中的任何非零項目都必須是現有紋理物件的名稱。如果 Textures
為 ?NULL
,則相當於指定了一個僅包含零的適當大小的陣列。
gl:bindTextureUnit/2
將現有紋理物件綁定到編號為 Unit
的紋理單元。
gl:bindTransformFeedback/2
將名稱為 Id
的轉換回饋物件綁定到目前的 GL 狀態。Id
必須是先前從呼叫 gl:genTransformFeedbacks/1
返回的名稱。如果 Id
先前未被綁定,則會建立一個名稱為 Id
且以預設轉換狀態向量初始化的新轉換回饋物件。
gl:bindVertexArray/1
綁定名稱為 Array
的頂點陣列物件。Array
是先前從呼叫 gl:genVertexArrays/1
返回的頂點陣列物件的名稱,或零以中斷現有的頂點陣列物件綁定。
點陣圖是二進位影像。繪製時,點陣圖會相對於目前的點陣位置定位,並且使用目前的點陣顏色或索引寫入與點陣圖中的 1 對應的畫面緩衝區像素。與點陣圖中的 0 對應的畫面緩衝區像素不會被修改。
?GL_BLEND_COLOR
可用於計算來源和目標混合因子。顏色成分在儲存之前會被限制在 [0 1] 範圍內。請參閱 gl:blendFunc/2
以取得混合操作的完整說明。最初,?GL_BLEND_COLOR
會設定為 (0, 0, 0, 0)。
混合方程式決定如何將新像素(「來源」顏色)與畫面緩衝區中已有的像素(「目標」顏色)結合。此函數將 RGB 混合方程式和 Alpha 混合方程式都設定為單一方程式。 gl:blendEquationi/2
為單一繪圖緩衝區指定混合方程式,而 gl:blendEquation/1
設定所有繪圖緩衝區的混合方程式。
混合方程式決定如何將新像素(「來源」顏色)與畫面緩衝區中已有的像素(「目標」顏色)結合。這些函數為 RGB 顏色成分指定一個混合方程式,並為 Alpha 成分指定一個混合方程式。 gl:blendEquationSeparatei/3
為單一繪圖緩衝區指定混合方程式,而 gl:blendEquationSeparate/2
設定所有繪圖緩衝區的混合方程式。
可以使用將傳入(來源)RGBA 值與畫面緩衝區中已有的 RGBA 值(目標值)混合的函數來繪製像素。混合最初是停用的。使用 gl:enable/1
和 gl:disable/1
並使用參數 ?GL_BLEND
來啟用和停用混合。
可以使用將傳入(來源)RGBA 值與畫面緩衝區中已有的 RGBA 值(目標值)混合的函數來繪製像素。混合最初是停用的。使用 gl:enable/1
和 gl:disable/1
並使用參數 ?GL_BLEND
來啟用和停用混合。
gl:blitFramebuffer/10
和 glBlitNamedFramebuffer
將像素值矩形從讀取畫面緩衝區的一個區域傳輸到繪圖畫面緩衝區的另一個區域。
gl:bufferData/4
和 glNamedBufferData
會為緩衝區物件建立新的資料儲存區。在 gl:bufferData/4
的情況下,會使用目前綁定到 Target
的緩衝區物件。對於 glNamedBufferData
,將會改為使用呼叫者在 Buffer
中指定的 ID 相關聯的緩衝區物件。
gl:bufferStorage/4
和 glNamedBufferStorage
會建立新的不可變資料儲存區。對於 gl:bufferStorage/4
,將會初始化目前綁定到 Target
的緩衝區物件。對於 glNamedBufferStorage
,Buffer
是將要設定的緩衝區物件的名稱。資料儲存區的大小由 Size
指定。如果初始資料可用,則可以在 Data
中提供其位址。否則,要建立未初始化的資料儲存區,Data
應該為 ?NULL
。
gl:bufferSubData/4
和 glNamedBufferSubData
會重新定義指定緩衝區物件的部分或全部資料儲存區。從位元組偏移量 Offset
開始並延伸 Size
個位元組的資料會從 Data
所指向的記憶體複製到資料儲存區。Offset
和 Size
必須定義完全位於緩衝區物件的資料儲存區內的範圍。
gl:callList/1
會執行指定的顯示列表。儲存在顯示列表中的指令會依序執行,如同它們是在沒有使用顯示列表的情況下被呼叫一樣。如果 List
尚未被定義為顯示列表,則 gl:callList/1
會被忽略。
gl:callLists/1
會執行作為 Lists
傳遞的名稱列表中每個顯示列表。因此,儲存在每個顯示列表中的指令會依序執行,如同它們是在沒有使用顯示列表的情況下被呼叫一樣。尚未被定義的顯示列表名稱會被忽略。
gl:checkFramebufferStatus/1
和 glCheckNamedFramebufferStatus
會傳回當作讀取或繪製幀緩衝區處理時,幀緩衝區物件的完整性狀態,具體取決於 Target
的值。
gl:clampColor/2
控制在 gl:readPixels/7
期間執行的顏色鉗制。Target
必須是 ?GL_CLAMP_READ_COLOR
。如果 Clamp
是 ?GL_TRUE
,則啟用讀取顏色鉗制;如果 Clamp
是 ?GL_FALSE
,則停用讀取顏色鉗制。如果 Clamp
是 ?GL_FIXED_ONLY
,則只有當選取的讀取緩衝區具有定點元件時才啟用讀取顏色鉗制,否則會停用。
gl:clear/1
將視窗的位元平面區域設定為先前由 gl:clearColor/4
、gl:clearDepth/1
和 gl:clearStencil/1
選取的值。可以使用 gl:drawBuffer/1
一次選取多個緩衝區來同時清除多個顏色緩衝區。
gl:clearAccum/4
指定 gl:clear/1
用於清除累積緩衝區的紅色、綠色、藍色和 alpha 值。
這些指令會將幀緩衝區的指定緩衝區清除為指定的值。對於 gl:clearBuffer*()
,幀緩衝區是目前綁定的繪製幀緩衝區物件。對於 glClearNamedFramebuffer*
,Framebuffer
為零,表示預設繪製幀緩衝區,或是幀緩衝區物件的名稱。
gl:clearColor/4
指定 gl:clear/1
用於清除顏色緩衝區的紅色、綠色、藍色和 alpha 值。gl:clearColor/4
指定的值會被鉗制在 [0 1] 範圍內。
gl:clearDepth/1
指定 gl:clear/1
用於清除深度緩衝區的深度值。gl:clearDepth/1
指定的值會被鉗制在 [0 1] 範圍內。
gl:clearIndex/1
指定 gl:clear/1
用於清除顏色索引緩衝區的索引。C
不會被鉗制。相反地,C
會被轉換為二進位點右側具有未指定精度的定點值。然後,此值的整數部分會與 2 m-1 進行遮罩,其中 m 是儲存在幀緩衝區中顏色索引的位元數。
gl:clearStencil/1
指定 gl:clear/1
用於清除模板緩衝區的索引。S
會與 2 m-1 進行遮罩,其中 m 是模板緩衝區中的位元數。
gl:clearTexImage/5
使用應用程式提供的值填滿紋理中包含的所有圖像。Texture
必須是現有紋理的名稱。此外,Texture
不可以是緩衝區紋理的名稱,也不能是壓縮的內部格式。
gl:clearTexSubImage/11
使用應用程式提供的值填滿紋理中包含的所有或部分圖像。Texture
必須是現有紋理的名稱。此外,Texture
不可以是緩衝區紋理的名稱,也不能是壓縮的內部格式。
gl:clientActiveTexture/1
選取要由 gl:texCoordPointer/4
修改的頂點陣列客戶端狀態參數,並分別使用 gl:enableClientState/1
或 gl:disableClientState/1
啟用或停用,當呼叫的參數為 ?GL_TEXTURE_COORD_ARRAY
時。
gl:clientWaitSync/3
會導致客戶端阻塞並等待由 Sync
指定的同步物件發出訊號。如果 gl:clientWaitSync/3
被呼叫時 Sync
已發出訊號,gl:clientWaitSync/3
會立即返回,否則它會阻塞並等待最多 Timeout
奈秒,直到 Sync
發出訊號。
gl:clipControl/2
控制裁剪體積的行為以及裁剪座標到視窗座標的轉換行為。
幾何圖形始終會根據 x
、y
和 z
中的六平面截頭錐體邊界進行裁剪。gl:clipPlane/2
允許指定額外的平面,這些平面不一定垂直於 x
、y
或 z
軸,所有幾何圖形都會根據這些平面進行裁剪。若要判斷額外裁剪平面的最大數量,請使用參數 ?GL_MAX_CLIP_PLANES
呼叫 gl:getIntegerv/1
。所有實作都支援至少六個此類裁剪平面。由於產生的裁剪區域是已定義半空間的交集,因此它始終是凸的。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
GL 儲存目前單值顏色索引和目前四值 RGBA 顏色。gl:color()
設定新的四值 RGBA 顏色。gl:color()
有兩種主要變體:gl:color3()
和 gl:color4()
。gl:color3()
變體會明確指定新的紅色、綠色和藍色值,並隱含地將目前的 alpha 值設定為 1.0 (全強度)。gl:color4()
變體會明確指定所有四種顏色成分。
gl:colorMask/4
和 gl:colorMaski/5
指定是否可以或不能寫入幀緩衝區中的個別顏色成分。gl:colorMaski/5
設定特定繪製緩衝區的遮罩,而 gl:colorMask/4
設定所有繪製緩衝區的遮罩。例如,如果 Red
是 ?GL_FALSE
,則無論嘗試進行哪種繪圖操作,都不會變更任何顏色緩衝區中任何像素的紅色成分。
gl:colorMaterial/2
指定哪些材質參數會追蹤目前的顏色。當 ?GL_COLOR_MATERIAL
啟用時,由 Mode
指定的材質參數,或由 Face
指定的材質參數會隨時追蹤目前的顏色。
gl:colorPointer/4
指定在渲染時要使用的顏色成分陣列的位置和資料格式。Size
指定每個顏色的成分數,且必須為 3 或 4。Type
指定每個顏色成分的資料類型,而 Stride
指定從一個顏色到下一個顏色的位元組步幅,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。(單陣列儲存可能在某些實作上更有效率;請參閱 gl:interleavedArrays/3
。)
gl:colorSubTable/6
用於重新指定先前使用 gl:colorTable/6
定義的顏色表之連續部分。Data
所參照的像素會取代現有表格中從索引 Start
到 start+count-1(含)的部分。此區域不得包含原始指定顏色表範圍外的任何條目。指定寬度為 0 的子紋理並非錯誤,但此類指定沒有效果。
gl:colorTable/6
可用於兩種情況:測試在給定特定參數下,查找表實際的大小和顏色解析度,或是載入顏色查找表的內容。使用 ?GL_PROXY_*
目標用於第一種情況,其他目標則用於第二種情況。
gl:colorTableParameter()
用於指定當顏色分量載入到顏色表時應用的縮放因子和偏差項。Target
表示縮放和偏差項所應用的顏色表;它必須設定為 ?GL_COLOR_TABLE
、?GL_POST_CONVOLUTION_COLOR_TABLE
或 ?GL_POST_COLOR_MATRIX_COLOR_TABLE
。
gl:compileShader/1
編譯儲存在由 Shader
指定的著色器物件中的原始碼字串。
紋理貼圖允許著色器讀取影像陣列的元素。
紋理貼圖允許著色器讀取影像陣列的元素。
紋理貼圖允許著色器讀取影像陣列的元素。
紋理貼圖允許著色器讀取影像陣列的元素。
紋理貼圖允許著色器讀取影像陣列的元素。
紋理貼圖允許著色器讀取影像陣列的元素。
gl:convolutionFilter1D/6
從像素陣列建立一維捲積濾波器核心。
gl:convolutionFilter2D/7
從像素陣列建立二維捲積濾波器核心。
gl:copyBufferSubData/5
和 glCopyNamedBufferSubData
將附加到來源緩衝區物件的資料儲存區的一部分複製到附加到目標緩衝區物件的資料儲存區。由 Size
指示的基本機器單元數量從來源的偏移量 ReadOffset
複製到目標的偏移量 WriteOffset
。ReadOffset
、WriteOffset
和 Size
均以基本機器單元表示。
gl:copyColorSubTable/5
用於重新指定先前使用 gl:colorTable/6
定義的顏色表的連續部分。從幀緩衝區複製的像素會取代現有表中索引從 Start
到 start+x-1 (包含) 的部分。此區域不得包含超出顏色表範圍的任何條目,如同最初指定的那樣。指定寬度為 0 的子紋理不是錯誤,但這種指定沒有任何效果。
gl:copyColorTable/5
從目前的 ?GL_READ_BUFFER
(而不是從主記憶體,如同 gl:colorTable/6
的情況) 載入顏色表。
gl:copyConvolutionFilter1D/5
使用來自目前 ?GL_READ_BUFFER
的像素 (而不是從主記憶體,如同 gl:convolutionFilter1D/6
的情況) 定義一維捲積濾波器核心。
gl:copyConvolutionFilter2D/6
使用來自目前 ?GL_READ_BUFFER
的像素 (而不是從主記憶體,如同 gl:convolutionFilter2D/7
的情況) 定義二維捲積濾波器核心。
gl:copyImageSubData/15
可用於將資料從一個影像 (即紋理或渲染緩衝區) 複製到另一個影像。gl:copyImageSubData/15
不執行通用轉換,例如縮放、調整大小、混合、色彩空間或格式轉換。它應被視為以類似於 CPU memcpy 的方式運作。如果格式相容,CopyImageSubData 可以在具有不同內部格式的影像之間複製。
gl:copyPixels/5
將螢幕對齊的像素矩形從指定的幀緩衝區位置複製到相對於目前光柵位置的區域。只有當整個像素來源區域都在視窗的暴露部分內時,其操作才是明確定義的。從視窗外部或從視窗中未暴露的區域複製的結果取決於硬體且未定義。
gl:copyTexImage1D/7
使用來自目前的 ?GL_READ_BUFFER
的像素定義一維紋理影像。
gl:copyTexImage2D/8
使用來自目前的 ?GL_READ_BUFFER
的像素定義二維紋理影像或立方體貼圖紋理影像。
gl:copyTexSubImage1D/6
和 glCopyTextureSubImage1D
使用來自目前的 ?GL_READ_BUFFER
的像素取代一維紋理影像的一部分 (而不是從主記憶體,如同 gl:texSubImage1D/7
的情況)。對於 gl:copyTexSubImage1D/6
,繫結到 Target
的紋理物件將用於此流程。對於 glCopyTextureSubImage1D
,Texture
會指出應將哪個紋理物件用於呼叫的目的。
gl:copyTexSubImage2D/8
和 glCopyTextureSubImage2D
使用來自目前的 ?GL_READ_BUFFER
的像素取代二維紋理影像、立方體貼圖紋理影像、矩形影像的矩形部分,或一維陣列紋理的多個切片的線性部分 (而不是從主記憶體,如同 gl:texSubImage2D/9
的情況)。
gl:copyTexSubImage3D/9
和 glCopyTextureSubImage3D
函式使用來自目前的 ?GL_READ_BUFFER
的像素取代三維或二維陣列紋理影像的矩形部分 (而不是從主記憶體,如同 gl:texSubImage3D/11
的情況)。
gl:createBuffers/1
在 Buffers
中傳回 N
個先前未使用的緩衝區名稱,每個名稱都代表一個新的緩衝區物件,如同繫結到未指定的目標一樣初始化。
gl:createFramebuffers/1
在 Framebuffers
中傳回 N
個先前未使用的幀緩衝區名稱,每個名稱都代表一個初始化為預設狀態的新幀緩衝區物件。
gl:createProgram/0
建立一個空的程式物件,並傳回可用於參考它的非零值。程式物件是一個可以附加著色器物件的物件。這提供了一種機制來指定將連結以建立程式的著色器物件。它還提供了一種方法來檢查將用於建立程式的著色器之間的相容性 (例如,檢查頂點著色器和片段著色器之間的相容性)。當不再需要作為程式物件的一部分時,可以分離著色器物件。
gl:createProgramPipelines/1
在 Pipelines
中傳回 N
個先前未使用的程式管線名稱,每個名稱都代表一個初始化為預設狀態的新程式管線物件。
gl:createQueries/2
在 Ids
中傳回 N
個先前未使用的查詢物件名稱,每個名稱都代表一個具有指定 Target
的新查詢物件。
gl:createRenderbuffers/1
在 Renderbuffers
中傳回 N
個先前未使用的渲染緩衝區物件名稱,每個名稱都代表一個初始化為預設狀態的新渲染緩衝區物件。
gl:createSamplers/1
在 Samplers
中傳回 N
個先前未使用的取樣器名稱,每個名稱都代表一個初始化為預設狀態的新取樣器物件。
gl:createShader/1
建立一個空的著色器物件,並傳回可用於參考它的非零值。著色器物件用於維護定義著色器的原始碼字串。ShaderType
表示要建立的著色器類型。支援五種著色器類型。類型為 ?GL_COMPUTE_SHADER
的著色器是預期在可程式化運算處理器上執行的著色器。類型為 ?GL_VERTEX_SHADER
的著色器是預期在可程式化頂點處理器上執行的著色器。類型為 ?GL_TESS_CONTROL_SHADER
的著色器是預期在控制階段的可程式化細分處理器上執行的著色器。類型為 ?GL_TESS_EVALUATION_SHADER
的著色器是預期在評估階段的可程式化細分處理器上執行的著色器。類型為 ?GL_GEOMETRY_SHADER
的著色器是預期在可程式化幾何處理器上執行的著色器。類型為 ?GL_FRAGMENT_SHADER
的著色器是預期在可程式化片段處理器上執行的著色器。
gl:createShaderProgram()
建立一個程式物件,其中包含由 Type
指定的單個階段的已編譯和已連結的著色器。Strings
指的是用於建立著色器可執行檔的 Count
個字串陣列。
gl:createTextures/2
在 Textures
中返回 N
個先前未使用的紋理名稱,每個名稱代表一個新的紋理物件,其維度和類型由 Target
指定,並初始化為該紋理類型的預設值。
gl:createTransformFeedbacks/1
在 Ids
中返回 N
個先前未使用的變換回饋物件名稱,每個名稱代表一個新的變換回饋物件,並初始化為預設狀態。
gl:createVertexArrays/1
在 Arrays
中返回 N
個先前未使用的頂點陣列物件名稱,每個名稱代表一個新的頂點陣列物件,並初始化為預設狀態。
gl:cullFace/1
指定當啟用面剔除時,正面或背面(由 mode
指定)是否被剔除。面剔除最初是禁用的。要啟用和禁用面剔除,請使用引數 ?GL_CULL_FACE
呼叫 gl:enable/1
和 gl:disable/1
命令。面包括三角形、四邊形、多邊形和矩形。
gl:debugMessageControl/5
控制除錯上下文所產生的除錯訊息的報告。參數 Source
、Type
和 Severity
形成一個過濾器,從 GL 產生的潛在訊息池中選擇訊息。
gl:debugMessageInsert/5
將使用者提供的訊息插入除錯輸出佇列。Source
指定將用於分類訊息的來源,並且必須為 ?GL_DEBUG_SOURCE_APPLICATION
或 ?GL_DEBUG_SOURCE_THIRD_PARTY
。所有其他來源都保留給 GL 實作使用。Type
指示要插入的訊息類型,可以是 ?GL_DEBUG_TYPE_ERROR
、?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
、?GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
、?GL_DEBUG_TYPE_PORTABILITY
、?GL_DEBUG_TYPE_PERFORMANCE
、?GL_DEBUG_TYPE_MARKER
、?GL_DEBUG_TYPE_PUSH_GROUP
、?GL_DEBUG_TYPE_POP_GROUP
或 ?GL_DEBUG_TYPE_OTHER
。Severity
指示訊息的嚴重性,可以是 ?GL_DEBUG_SEVERITY_LOW
、?GL_DEBUG_SEVERITY_MEDIUM
、?GL_DEBUG_SEVERITY_HIGH
或 ?GL_DEBUG_SEVERITY_NOTIFICATION
。Id
可供應用程式定義使用,並且可以是任何值。此值將被記錄並用於識別訊息。
gl:deleteBuffers/1
刪除由陣列 Buffers
的元素命名的 N
個緩衝區物件。在刪除緩衝區物件後,它沒有內容,並且其名稱可供重複使用(例如通過 gl:genBuffers/1
)。如果刪除當前綁定的緩衝區物件,則綁定會還原為 0(不存在任何緩衝區物件)。
gl:deleteFramebuffers/1
刪除名稱儲存在 Framebuffers
定址的陣列中的 N
個幀緩衝區物件。名稱 0 由 GL 保留,如果它出現在 Framebuffers
中,則會被靜默忽略,其他未使用的名稱也是如此。一旦刪除幀緩衝區物件,其名稱將再次未使用,並且沒有任何附件。如果當前綁定到一個或多個目標 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
的幀緩衝區被刪除,就好像已使用對應的 Target
和 Framebuffer
零執行了 gl:bindFramebuffer/2
。
gl:deleteLists/2
導致刪除連續的顯示列表組。List
是要刪除的第一個顯示列表的名稱,Range
是要刪除的顯示列表數。所有顯示列表 d 滿足 list<= d<= list+range-1 都會被刪除。
gl:deleteProgram/1
釋放內存並使與 Program
指定的程式物件相關聯的名稱失效。此命令有效地撤消了對 gl:createProgram/0
的呼叫效果。
gl:deleteProgramPipelines/1
刪除名稱儲存在陣列 Pipelines
中的 N
個程式管線物件。Pipelines
中未使用的名稱將被忽略,名稱 0 也是如此。刪除程式管線物件後,其名稱將再次未使用,並且沒有任何內容。如果刪除當前綁定的程式管線物件,則該物件的綁定會還原為零,並且沒有程式管線物件變為當前。
gl:deleteQueries/1
刪除由陣列 Ids
的元素命名的 N
個查詢物件。刪除查詢物件後,它沒有內容,並且其名稱可供重複使用(例如通過 gl:genQueries/1
)。
gl:deleteRenderbuffers/1
刪除名稱儲存在 Renderbuffers
定址的陣列中的 N
個渲染緩衝區物件。名稱 0 由 GL 保留,如果它出現在 Renderbuffers
中,則會被靜默忽略,其他未使用的名稱也是如此。一旦刪除渲染緩衝區物件,其名稱將再次未使用,並且沒有任何內容。如果刪除當前綁定到目標 ?GL_RENDERBUFFER
的渲染緩衝區,就好像已使用 ?GL_RENDERBUFFER
的 Target
和名稱為 0 的 Name
執行了 gl:bindRenderbuffer/2
。
gl:deleteSamplers/1
刪除由陣列 Samplers
的元素命名的 N
個取樣器物件。刪除取樣器物件後,其名稱將再次未使用。如果刪除當前綁定到取樣器單元的取樣器物件,就好像呼叫了 gl:bindSampler/2
,其中單元設定為取樣器綁定的單元,取樣器設定為 0。Samplers
中未使用的名稱將被靜默忽略,保留名稱 0 也是如此。
gl:deleteShader/1
釋放內存並使與 Shader
指定的著色器物件相關聯的名稱失效。此命令有效地撤消了對 gl:createShader/1
的呼叫效果。
gl:deleteSync/1
刪除由 Sync
指定的同步物件。如果與指定的同步物件對應的柵欄命令已完成,或者如果沒有 gl:waitSync/3
或 gl:clientWaitSync/3
命令在 Sync
上阻塞,則會立即刪除該物件。否則,Sync
會被標記為刪除,並且當它不再與任何柵欄命令相關聯,並且不再阻塞任何 gl:waitSync/3
或 gl:clientWaitSync/3
命令時將被刪除。在任何一種情況下,在 gl:deleteSync/1
返回後,名稱 Sync
無效,並且不能再用於引用同步物件。
gl:deleteTextures/1
刪除由陣列 Textures
的元素命名的 N
個紋理。刪除紋理後,它沒有內容或維度,並且其名稱可供重複使用(例如通過 gl:genTextures/1
)。如果刪除當前綁定的紋理,則綁定會還原為 0(預設紋理)。
gl:deleteTransformFeedbacks/1
刪除名稱儲存在陣列 Ids
中的 N
個變換回饋物件。Ids
中未使用的名稱將被忽略,名稱 0 也是如此。刪除變換回饋物件後,其名稱將再次未使用,並且沒有任何內容。如果刪除活動的變換回饋物件,則其名稱會立即變為未使用,但基礎物件不會被刪除,直到它不再活動。
gl:deleteVertexArrays/1
刪除名稱儲存在 Arrays
定址的陣列中的 N
個頂點陣列物件。一旦刪除頂點陣列物件,它就沒有內容,並且其名稱再次未使用。如果刪除當前綁定的頂點陣列物件,則該物件的綁定會還原為零,並且預設頂點陣列變為當前。 Arrays
中未使用的名稱將被靜默忽略,值 0 也是如此。
gl:depthFunc/1
指定用於比較每個傳入像素深度值與深度緩衝區中存在的深度值的函數。只有在啟用深度測試時才會執行比較。(請參閱 gl:enable/1
和 gl:disable/1
的 ?GL_DEPTH_TEST
。)
gl:depthMask/1
指定是否啟用深度緩衝區寫入。如果 Flag
為 ?GL_FALSE
,則禁用深度緩衝區寫入。否則,將啟用。最初,深度緩衝區寫入是啟用的。
在裁剪並除以 w
之後,深度座標的範圍會從 -1 到 1,分別對應到近裁剪面和遠裁剪面。每個視埠都有一個獨立的深度範圍,指定為此範圍內標準化深度座標到視窗深度座標的線性映射。無論實際的深度緩衝區實作方式為何,視窗座標深度值都被視為範圍從 0 到 1(如顏色分量)。gl:depthRangeArray()
指定此範圍中標準化深度座標到視窗深度座標的線性映射,適用於範圍 [First
, First
+ Count
) 內的每個視埠。因此,gl:depthRangeArray()
接受的值在接受之前都會被鉗制到此範圍內。
在裁剪並除以 w
之後,深度座標的範圍會從 -1 到 1,分別對應到近裁剪面和遠裁剪面。gl:depthRange/2
指定此範圍中標準化深度座標到視窗深度座標的線性映射。無論實際的深度緩衝區實作方式為何,視窗座標深度值都被視為範圍從 0 到 1(如顏色分量)。因此,gl:depthRange/2
接受的值在接受之前都會被鉗制到此範圍內。
在裁剪並除以 w
之後,深度座標的範圍會從 -1 到 1,分別對應到近裁剪面和遠裁剪面。每個視埠都有一個獨立的深度範圍,指定為此範圍內標準化深度座標到視窗深度座標的線性映射。無論實際的深度緩衝區實作方式為何,視窗座標深度值都被視為範圍從 0 到 1(如顏色分量)。gl:depthRangeIndexed/3
指定此範圍中標準化深度座標到視窗深度座標的線性映射,適用於指定的視埠。因此,gl:depthRangeIndexed/3
接受的值在接受之前都會被鉗制到此範圍內。
gl:detachShader/2
將 Shader
指定的著色器物件從 Program
指定的程式物件分離。此命令可用於還原命令 gl:attachShader/2
的效果。
等同於 enablei/2
。
gl:dispatchCompute/3
啟動一個或多個計算工作群組。每個工作群組都由計算著色器階段的活動程式物件處理。雖然工作群組內的個別著色器調用會作為一個單位執行,但工作群組會完全獨立且以未指定的順序執行。Num_groups_x
、Num_groups_y
和 Num_groups_z
分別指定將在 X、Y 和 Z 維度中調度的本機工作群組數量。
gl:dispatchComputeIndirect/1
使用目前繫結到 ?GL_DISPATCH_INDIRECT_BUFFER
目標的緩衝區物件中儲存的參數,啟動一個或多個計算工作群組。每個工作群組都由計算著色器階段的活動程式物件處理。雖然工作群組內的個別著色器調用會作為一個單位執行,但工作群組會完全獨立且以未指定的順序執行。Indirect
包含緩衝區物件的資料儲存區中的偏移量,該物件繫結到 ?GL_DISPATCH_INDIRECT_BUFFER
目標,參數儲存在該處。
gl:drawArrays/3
使用極少量的子常式呼叫來指定多個幾何圖元。您可以使用預先指定的頂點、法線和顏色陣列,而不是呼叫 GL 程序來傳遞每個個別的頂點、法線、紋理座標、邊緣旗標或顏色,並使用它們以單次呼叫 gl:drawArrays/3
來建構一系列圖元。
gl:drawArraysIndirect/2
使用極少量的子常式呼叫來指定多個幾何圖元。gl:drawArraysIndirect/2
的行為與 gl:drawArraysInstancedBaseInstance/5
類似,除了 gl:drawArraysInstancedBaseInstance/5
的參數儲存在 Indirect
給定的位址的記憶體中。
gl:drawArraysInstanced/4
的行為與 gl:drawArrays/3
完全相同,只是執行元素範圍的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
gl:drawArraysInstancedBaseInstance/5
的行為與 gl:drawArrays/3
完全相同,只是執行元素範圍的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
當色彩寫入框架緩衝區時,它們會寫入 gl:drawBuffer/1
指定的色彩緩衝區。下列其中一個值可用於預設框架緩衝區
gl:drawBuffers/1
和 glNamedFramebufferDrawBuffers
定義一個緩衝區陣列,來自片段著色器資料的輸出將會寫入其中。如果片段著色器將值寫入一個或多個使用者定義的輸出變數,則每個變數的值會寫入 Bufs
內的位置所指定的緩衝區,該位置對應到指派給該使用者定義輸出的位置。用於指派給大於或等於 N
的位置的使用者定義輸出的繪製緩衝區會隱式設定為 ?GL_NONE
,並且寫入此類輸出的任何資料都會被捨棄。
gl:drawElements/4
使用極少量的子常式呼叫來指定多個幾何圖元。您可以使用預先指定的頂點、法線等等陣列,而不是呼叫 GL 函式來傳遞每個個別的頂點、法線、紋理座標、邊緣旗標或顏色,並使用它們以單次呼叫 gl:drawElements/4
來建構一系列圖元。
gl:drawElementsBaseVertex/5
的行為與 gl:drawElements/4
完全相同,除了對應的繪製呼叫所傳輸的第 i
個元素將取自每個啟用陣列的元素 Indices
[i] + Basevertex
。如果結果值大於 Type
可表示的最大值,則就好像計算已向上轉換為 32 位元不帶正負號的整數(在溢位條件下環繞)。如果總和為負數,則此運算未定義。
gl:drawElementsIndirect/3
使用極少量的子常式呼叫來指定多個索引幾何圖元。gl:drawElementsIndirect/3
的行為與 gl:drawElementsInstancedBaseVertexBaseInstance/7
類似,除了 gl:drawElementsInstancedBaseVertexBaseInstance/7
的參數儲存在 Indirect
給定的位址的記憶體中。
gl:drawElementsInstanced/5
的行為與 gl:drawElements/4
完全相同,只是執行元素集合的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
gl:drawElementsInstancedBaseInstance/6
的行為與 gl:drawElements/4
完全相同,只是執行元素集合的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
gl:drawElementsInstancedBaseVertex/6
的行為與 gl:drawElementsInstanced/5
完全相同,除了對應的繪製呼叫所傳輸的第 i
個元素將取自每個啟用陣列的元素 Indices
[i] + Basevertex
。如果結果值大於 Type
可表示的最大值,則就好像計算已向上轉換為 32 位元不帶正負號的整數(在溢位條件下環繞)。如果總和為負數,則此運算未定義。
gl:drawElementsInstancedBaseVertexBaseInstance/7
的行為與 gl:drawElementsInstanced/5
相同,差別在於對應的繪圖呼叫所傳輸的第 i
個元素,會從每個啟用的陣列中的 Indices
[i] + Basevertex
元素取得。如果計算後的數值大於 Type
所能表示的最大值,則會如同將計算結果向上轉換為 32 位元無號整數(在溢位的情況下會環繞)。如果總和為負數,則此操作的行為未定義。
gl:drawPixels/5
從記憶體讀取像素資料,並將其寫入相對於目前光柵位置的幀緩衝區,前提是光柵位置有效。使用 gl:rasterPos()
或 gl:windowPos()
來設定目前的光柵位置;使用 gl:get()
並帶入參數 ?GL_CURRENT_RASTER_POSITION_VALID
來判斷指定的光柵位置是否有效,以及使用 gl:get()
並帶入參數 ?GL_CURRENT_RASTER_POSITION
來查詢光柵位置。
gl:drawRangeElements/6
是 gl:drawElements/4
的限制形式。Mode
和 Count
與 gl:drawElements/4
的對應參數相同,但額外限制陣列 Count
中的所有值都必須介於 Start
和 End
之間(包含)。
gl:drawRangeElementsBaseVertex/7
是 gl:drawElementsBaseVertex/5
的限制形式。Mode
、Count
和 Basevertex
與 gl:drawElementsBaseVertex/5
的對應參數相同,但額外限制陣列 Indices
中的所有值在加上 Basevertex
之前,必須介於 Start
和 End
之間(包含)。超出範圍 [Start
, End
] 的索引值會以與 gl:drawElementsBaseVertex/5
相同的方式處理。對應的繪圖呼叫所傳輸的第 i
個元素,會從每個啟用的陣列中的 Indices
[i] + Basevertex
元素取得。如果計算後的數值大於 Type
所能表示的最大值,則會如同將計算結果向上轉換為 32 位元無號整數(在溢位的情況下會環繞)。如果總和為負數,則此操作的行為未定義。
gl:drawTransformFeedback/2
使用由 Id
指定的轉換回饋擷取的計數,繪製由 Mode
指定類型的圖元。呼叫 gl:drawTransformFeedback/2
等同於呼叫 gl:drawArrays/3
,其中 Mode
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流零上擷取的頂點數量。
gl:drawTransformFeedbackInstanced/3
使用由 Id
指定的轉換回饋物件的 Stream
指定的轉換回饋串流所擷取的計數,繪製由 Mode
指定類型的多個圖元範圍副本。呼叫 gl:drawTransformFeedbackInstanced/3
等同於呼叫 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流零上擷取的頂點數量。
gl:drawTransformFeedbackStream/3
使用由 Id
指定的轉換回饋物件的 Stream
指定的轉換回饋串流所擷取的計數,繪製由 Mode
指定類型的圖元。呼叫 gl:drawTransformFeedbackStream/3
等同於呼叫 gl:drawArrays/3
,其中 Mode
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流 Stream
上擷取的頂點數量。
gl:drawTransformFeedbackStreamInstanced/4
使用由 Id
指定的轉換回饋物件的 Stream
指定的轉換回饋串流所擷取的計數,繪製由 Mode
指定類型的多個圖元範圍副本。呼叫 gl:drawTransformFeedbackStreamInstanced/4
等同於呼叫 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流 Stream
上擷取的頂點數量。
gl:edgeFlagPointer/2
指定在渲染時使用的布林邊緣旗標陣列的位置和資料格式。Stride
指定從一個邊緣旗標到下一個邊緣旗標的位元組跨度,允許將頂點和屬性封裝到單個陣列或儲存在單獨的陣列中。
在 gl:'begin'/1
/gl:'end'/0
配對之間指定的每個多邊形、分離三角形或分離四邊形的頂點,都會被標記為邊界或非邊界邊緣的起點。如果在指定頂點時,目前的邊緣旗標為 true,則該頂點會被標記為邊界邊緣的起點。否則,該頂點會被標記為非邊界邊緣的起點。gl:edgeFlag/1
會在 Flag
為 ?GL_TRUE
時將邊緣旗標位元設定為 ?GL_TRUE
,否則設定為 ?GL_FALSE
。
等同於 enablei/2
。
gl:enableClientState/1
和 gl:disableClientState/1
啟用或停用個別的客戶端功能。預設情況下,所有客戶端功能都已停用。gl:enableClientState/1
和 gl:disableClientState/1
都接受單個參數 Cap
,它可以假設以下值之一
gl:enable/1
和 gl:disable/1
啟用和停用各種功能。使用 gl:isEnabled/1
或 gl:get()
來判斷任何功能的目前設定。除了 ?GL_DITHER
和 ?GL_MULTISAMPLE
之外,每個功能的初始值都是 ?GL_FALSE
。?GL_DITHER
和 ?GL_MULTISAMPLE
的初始值是 ?GL_TRUE
。
gl:enableVertexAttribArray/1
和 gl:enableVertexArrayAttrib/2
啟用由 Index
指定的泛型頂點屬性陣列。gl:enableVertexAttribArray/1
使用目前綁定的頂點陣列物件來進行操作,而 gl:enableVertexArrayAttrib/2
則更新 ID 為 Vaobj
的頂點陣列物件的狀態。
gl:'begin'/1
和 gl:'end'/0
分隔定義圖元或一組類似圖元的頂點。gl:'begin'/1
接受單個參數,指定頂點以十種方式中的哪一種方式解釋。將 n 視為從 1 開始的整數計數,並將 N 視為指定的頂點總數,則解釋如下
條件渲染使用 gl:beginConditionalRender/2
開始,並使用 gl:endConditionalRender/0
結束。在條件渲染期間,如果查詢物件 Id
的 (?GL_SAMPLES_PASSED
) 結果為零,或 (?GL_ANY_SAMPLES_PASSED
) 結果為 ?GL_FALSE
,則所有頂點陣列命令,以及 gl:clear/1
和 gl:clearBuffer()
都沒有作用。設定目前頂點狀態的命令(例如 gl:vertexAttrib()
)的結果未定義。如果 (?GL_SAMPLES_PASSED
) 結果為非零值,或 (?GL_ANY_SAMPLES_PASSED
) 結果為 ?GL_TRUE
,則不會捨棄這些命令。gl:beginConditionalRender/2
的 Id
參數必須是先前從呼叫 gl:genQueries/1
返回的查詢物件的名稱。Mode
指定如何解釋查詢物件的結果。如果 Mode
為 ?GL_QUERY_WAIT
,則 GL 會等待查詢結果可用,然後使用結果來判斷是否捨棄後續的渲染命令。如果 Mode
為 ?GL_QUERY_NO_WAIT
,則 GL 可以選擇無條件執行後續的渲染命令,而無需等待查詢完成。
gl:beginQuery/2
和 gl:endQuery/1
劃定了查詢物件的邊界。Query
必須是先前呼叫 gl:genQueries/1
所傳回的名稱。如果名稱為 Id
的查詢物件尚不存在,則會以 Target
所決定的類型建立。 Target
必須是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
其中之一。查詢物件的行為取決於其類型,如下所示。
gl:beginQueryIndexed/3
和 gl:endQueryIndexed/2
劃定了查詢物件的邊界。Query
必須是先前呼叫 gl:genQueries/1
所傳回的名稱。如果名稱為 Id
的查詢物件尚不存在,則會以 Target
所決定的類型建立。 Target
必須是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
其中之一。查詢物件的行為取決於其類型,如下所示。
轉換回饋模式會捕捉頂點著色器(如果啟用了幾何著色器,則為幾何著色器)所寫入的 varying 變數值。在呼叫 gl:beginTransformFeedback/1
之後,直到後續呼叫 gl:endTransformFeedback/0
,轉換回饋才被視為啟動。轉換回饋指令必須成對使用。
gl:evalCoord1()
會在引數 U
評估已啟用的單一維度映射。gl:evalCoord2()
對於使用兩個域值 U
和 V
的二維映射執行相同的操作。若要定義映射,請呼叫 glMap1
和 glMap2
;若要啟用和停用它,請呼叫 gl:enable/1
和 gl:disable/1
。
gl:mapGrid()
和 gl:evalMesh()
搭配使用,以有效率地產生和評估一系列均勻間隔的映射域值。gl:evalMesh()
會逐步執行一或二維網格的整數域,其範圍是 glMap1
和 glMap2
指定的評估映射的域。Mode
決定結果頂點是以點、線或填滿的多邊形連接。
gl:mapGrid()
和 gl:evalMesh()
搭配使用,以有效率地產生和評估一系列均勻間隔的映射域值。gl:evalPoint()
可用於評估與 gl:evalMesh()
遍歷的相同網格空間中的單個網格點。呼叫 gl:evalPoint1/1
等同於呼叫 glEvalCoord1( i.ð u+u 1 ); 其中 ð u=(u 2-u 1)/n
gl:feedbackBuffer/3
函數控制回饋。回饋就像選擇一樣,是一種 GL 模式。透過呼叫 gl:renderMode/1
並使用 ?GL_FEEDBACK
來選擇此模式。當 GL 處於回饋模式時,不會產生任何像素來進行光柵化。相反地,使用 GL 將有關原本會進行光柵化的圖元資訊回饋到應用程式。
gl:fenceSync/2
會建立一個新的 fence sync 物件,將 fence 指令插入 GL 指令串流中,並將其與該 sync 物件關聯,然後傳回對應於該 sync 物件的非零名稱。
gl:finish/0
在所有先前呼叫的 GL 指令的效果完成之前不會傳回。這些效果包括對 GL 狀態的所有變更、對連線狀態的所有變更以及對幀緩衝區內容的所有變更。
不同的 GL 實作會在數個不同的位置緩衝指令,包括網路緩衝區和圖形加速器本身。gl:flush/0
會清空所有這些緩衝區,使所有已發出的指令在被實際渲染引擎接受時盡快執行。雖然此執行可能不會在任何特定時間段內完成,但它會在有限的時間內完成。
gl:flushMappedBufferRange/3
表示已對映射緩衝區物件的範圍進行修改。緩衝區物件先前必須使用 ?GL_MAP_FLUSH_EXPLICIT_BIT
旗標進行映射。
等同於 fogCoordfv/1
。
gl:fogCoord()
指定與每個頂點和目前光柵位置關聯的霧坐標。指定的值會進行內插,並用於計算霧顏色(請參閱 gl:fog()
)。
gl:fogCoordPointer/3
指定在渲染時要使用的霧坐標陣列的位置和資料格式。Type
指定每個霧坐標的資料類型,而 Stride
指定從一個霧坐標到下一個霧坐標的位元組跨距,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。
霧一開始會停用。啟用時,霧會影響光柵化幾何圖形、點陣圖和像素區塊,但不影響緩衝區清除作業。若要啟用和停用霧,請呼叫 gl:enable/1
和 gl:disable/1
並使用引數 ?GL_FOG
。
gl:framebufferParameteri/3
和 glNamedFramebufferParameteri
修改指定幀緩衝區物件中名為 Pname
的參數的值。預設繪製和讀取幀緩衝區沒有可修改的參數,因此它們不是這些指令的有效目標。
gl:framebufferRenderbuffer/4
和 glNamedFramebufferRenderbuffer
將渲染緩衝區附加為指定幀緩衝區物件的邏輯緩衝區之一。渲染緩衝區無法附加到預設繪製和讀取幀緩衝區,因此它們不是這些指令的有效目標。
這些指令會將所選 mipmap 層級或紋理物件的影像附加為指定幀緩衝區物件的邏輯緩衝區之一。紋理無法附加到預設繪製和讀取幀緩衝區,因此它們不是這些指令的有效目標。
在完全由不透明封閉曲面組成的場景中,背面的多邊形永遠不可見。消除這些不可見的多邊形顯然具有加快影像渲染速度的優點。若要啟用和停用消除背面的多邊形,請呼叫 gl:enable/1
和 gl:disable/1
並使用引數 ?GL_CULL_FACE
。
gl:frustum/6
描述產生透視投影的透視矩陣。目前的矩陣 (請參閱 gl:matrixMode/1
) 會乘以這個矩陣,而結果會取代目前的矩陣,就像呼叫 gl:multMatrix()
並將下列矩陣作為其引數一樣
gl:genBuffers/1
會在 Buffers
中傳回 N
個緩衝區物件名稱。無法保證這些名稱形成連續的整數集;但是,保證在呼叫 gl:genBuffers/1
之前,傳回的名稱都未使用。
gl:generateMipmap/1
和 gl:generateTextureMipmap/1
會為指定的紋理物件產生 mipmap。對於 gl:generateMipmap/1
,綁定到 Target
的紋理物件。對於 gl:generateTextureMipmap/1
,Texture
是紋理物件的名稱。
gl:genFramebuffers/1
會在 Ids
中傳回 N
個幀緩衝區物件名稱。無法保證這些名稱形成連續的整數集;但是,保證在呼叫 gl:genFramebuffers/1
之前,傳回的名稱都未使用。
gl:genLists/1
接受一個引數 Range
。它會回傳一個整數 n
,使得會建立 Range
個連續的空白顯示列表,命名為 n、n+1、...、n+range-1。如果 Range
為 0,如果沒有可用的 Range
個連續名稱群組,或是產生任何錯誤,則不會產生顯示列表,並回傳 0。
gl:genProgramPipelines/1
在 Pipelines
中回傳 N
個先前未使用的程式管線物件名稱。這些名稱會標記為已使用,僅用於 gl:genProgramPipelines/1
,但只有在首次綁定時才會取得程式管線狀態。
gl:genQueries/1
在 Ids
中回傳 N
個查詢物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genQueries/1
之前都未使用。
gl:genRenderbuffers/1
在 Renderbuffers
中回傳 N
個渲染緩衝區物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genRenderbuffers/1
之前都未使用。
gl:genSamplers/1
在 Samplers
中回傳 N
個取樣器物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genSamplers/1
之前都未使用。
gl:genTextures/1
在 Textures
中回傳 N
個紋理名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genTextures/1
之前都未使用。
gl:genTransformFeedbacks/1
在 Ids
中回傳 N
個先前未使用的變換回饋物件名稱。這些名稱會標記為已使用,僅用於 gl:genTransformFeedbacks/1
,但只有在首次綁定時才會取得變換回饋狀態。
gl:genVertexArrays/1
在 Arrays
中回傳 N
個頂點陣列物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genVertexArrays/1
之前都未使用。
gl:getActiveAttrib/3
回傳由 Program
指定的程式物件中活動屬性變數的相關資訊。可以透過呼叫 gl:getProgram()
並使用值 ?GL_ACTIVE_ATTRIBUTES
來取得活動屬性的數量。Index
的值為 0 會選取第一個活動屬性變數。Index
的允許值範圍從零到活動屬性變數的數量減一。
gl:getActiveSubroutineName/4
從 Program
中指定的程式物件查詢活動的著色器副程式統一變數的名稱。Index
指定由 Stage
給定的著色器階段中的著色器副程式統一變數的索引,且必須介於零和著色器階段的 ?GL_ACTIVE_SUBROUTINES
值減一之間。
gl:getActiveSubroutineUniformName/4
擷取活動的著色器副程式統一變數的名稱。Program
包含包含統一變數的程式名稱。Shadertype
指定 Index
給定的統一變數位置有效的階段。Index
必須介於零和著色器階段的 ?GL_ACTIVE_SUBROUTINE_UNIFORMS
值減一之間。
gl:getActiveUniform/3
回傳由 Program
指定的程式物件中活動統一變數的相關資訊。可以透過呼叫 gl:getProgram()
並使用值 ?GL_ACTIVE_UNIFORMS
來取得活動統一變數的數量。Index
的值為 0 會選取第一個活動統一變數。Index
的允許值範圍從零到活動統一變數的數量減一。
gl:getActiveUniformBlockiv/4
擷取關於 Program
內的活動統一區塊的相關資訊。
gl:getActiveUniformBlockName/3
擷取位於 Program
內 UniformBlockIndex
的活動統一區塊的名稱。
gl:getActiveUniformName/3
回傳位於 Program
內 UniformIndex
的活動統一變數的名稱。如果 UniformName
不是 NULL,則最多會將 BufSize
個字元(包含 null 終止符)寫入到由 UniformName
指定的位址的陣列中。如果 Length
不是 NULL,則會將寫入(或將會寫入)UniformName
的字元數(不包含 null 終止符)放置在 Length
中指定的位址的變數中。如果 Length
為 NULL,則不會回傳長度。Program
中最長統一變數名稱的長度由 ?GL_ACTIVE_UNIFORM_MAX_LENGTH
的值給定,可以使用 gl:getProgram()
進行查詢。
gl:getActiveUniformsiv/3
查詢名稱為 Pname
的參數的值,適用於 Program
內索引於 UniformIndices
的 UniformCount
個無符號整數陣列中指定的每個統一變數。成功後,每個統一變數的參數值會寫入到位址於 Params
中指定的陣列中的對應項目。如果產生錯誤,則不會將任何內容寫入 Params
。
gl:getAttachedShaders/2
回傳附加到 Program
的著色器物件的名稱。附加到 Program
的著色器物件的名稱將會回傳至 Shaders
。Shaders
中實際寫入的著色器名稱數量會回傳至 Count
。如果沒有著色器物件附加到 Program
,則 Count
會設為 0。可以在 Shaders
中回傳的最大著色器名稱數量由 MaxCount
指定。
gl:getAttribLocation/2
查詢先前由 Program
指定的連結程式物件中由 Name
指定的屬性變數,並回傳綁定至該屬性變數的通用頂點屬性的索引。如果 Name
是矩陣屬性變數,則會回傳矩陣第一列的索引。如果指定的屬性變數不是指定程式物件中的活動屬性,或如果 Name
以保留的前綴 "gl_" 開頭,則會回傳 -1 的值。
gl:getBufferParameteriv/2
在 Data
中回傳由 Target
指定的緩衝區物件的選取參數。
這些函數會在 Data
中回傳指定緩衝區物件的選取參數。
gl:getBufferSubData/4
和 glGetNamedBufferSubData
會回傳指定緩衝區物件的資料儲存區的部分或全部資料內容。從位元組偏移 Offset
開始並延伸 Size
個位元組的資料會從緩衝區物件的資料儲存區複製到 Data
所指向的記憶體。如果緩衝區物件目前已對應,或如果 Offset
和 Size
一起定義超出緩衝區物件資料儲存區範圍的範圍,則會擲回錯誤。
gl:getClipPlane/1
會在 Equation
中回傳 Plane
的平面方程式的四個係數。
gl:getColorTable/4
會在 Table
中回傳由 Target
指定的色彩表內容。不會執行任何像素傳輸作業,但是會執行適用於 gl:readPixels/7
的像素儲存模式。
回傳特定於色彩表 Target
的參數。
gl:getCompressedTexImage/3
和 glGetnCompressedTexImage
會將與 Target
和 Lod
相關聯的壓縮紋理影像傳回至 Pixels
中。glGetCompressedTextureImage
的用途相同,但它會採用紋理物件的 ID,而不是紋理目標。Pixels
應該是一個大小為 BufSize
位元組的陣列,用於 glGetnCompresedTexImage
和 glGetCompressedTextureImage
函數,而對於 gl:getCompressedTexImage/3
而言,則應該是一個大小為 ?GL_TEXTURE_COMPRESSED_IMAGE_SIZE
位元組的陣列。如果實際資料佔用的空間小於 BufSize
,則剩餘的位元組將不會被觸及。Target
指定紋理目標,該函數應從綁定到該目標的紋理中提取資料。Lod
指定所需影像的細節層級編號。
gl:getConvolutionFilter/4
會將目前的 1D 或 2D 卷積濾波器核心傳回為影像。根據 Format
和 Type
中的規範,一維或二維影像會放置在 Image
中。此影像上不會執行任何像素傳輸操作,但會套用相關的像素儲存模式。
gl:getConvolutionParameter()
檢索卷積參數。Target
決定要查詢哪個卷積濾波器。Pname
決定要傳回哪個參數。
gl:getDebugMessageLog/2
從偵錯訊息記錄中檢索訊息。從記錄中檢索最多 Count
個訊息。如果 Sources
不是 NULL,則每個訊息的來源會寫入到陣列中最多 Count
個元素。如果 Types
不是 NULL,則每個訊息的類型會寫入到陣列中最多 Count
個元素。如果 Id
不是 NULL,則每個訊息的識別碼會寫入到陣列中最多 Count
個元素。如果 Severities
不是 NULL,則每個訊息的嚴重性會寫入到陣列中最多 Count
個元素。如果 Lengths
不是 NULL,則每個訊息的長度會寫入到陣列中最多 Count
個元素。
gl:getError/0
會傳回錯誤旗標的值。每個可偵測的錯誤都會被指派一個數值代碼和符號名稱。當發生錯誤時,錯誤旗標會設定為適當的錯誤代碼值。在呼叫 gl:getError/0
之前,不會記錄其他錯誤,錯誤代碼會被傳回,且旗標會重設為 ?GL_NO_ERROR
。如果呼叫 gl:getError/0
會傳回 ?GL_NO_ERROR
,則表示自上次呼叫 gl:getError/0
或自 GL 初始化以來,沒有發生可偵測的錯誤。
gl:getFragDataIndex/2
會傳回當程式物件 Program
最後一次連結時,變數 Name
所綁定的片段顏色的索引。如果 Name
不是 Program
的變數輸出,或是發生錯誤,則會傳回 -1。
gl:getFragDataLocation/2
檢索程式 Program
的使用者定義的變數輸出變數 Name
的指定色彩編號綁定。Program
必須先前已連結。Name
必須是以 null 結尾的字串。如果 Name
不是 Program
內使用中的使用者定義變數輸出片段著色器變數的名稱,則會傳回 -1。
gl:getFramebufferAttachmentParameteriv/3
和 glGetNamedFramebufferAttachmentParameteriv
會傳回指定幀緩衝區物件附件的參數。
gl:getFramebufferParameteriv/2
和 glGetNamedFramebufferParameteriv
會查詢指定幀緩衝區物件的參數。
某些事件可能會導致 GL 內容重設。此類重設會導致所有內容狀態遺失,並要求應用程式在受影響的內容中重新建立所有物件。
gl:getHistogram/5
會將目前的長條圖表傳回為一維影像,其寬度與長條圖相同。此影像上不會執行任何像素傳輸操作,但會遵循適用於 1D 影像的像素儲存模式。
gl:getHistogramParameter()
用於查詢目前長條圖或 Proxy 的參數值。長條圖狀態資訊可以透過呼叫 gl:getHistogramParameter()
並使用 Target
為 ?GL_HISTOGRAM
(以取得目前長條圖表的資訊) 或 ?GL_PROXY_HISTOGRAM
(以取得來自最近 Proxy 要求的資訊) 和 Pname
引數的下列其中一個值來查詢
這些命令會傳回 GL 中簡單狀態變數的值。Pname
是一個符號常數,表示要傳回的狀態變數,而 Data
是一個指向指定類型陣列的指標,用於放置傳回的資料。
gl:getLight()
會在 Params
中傳回光源參數的值。 Light
會命名光源,並且是 ?GL_LIGHT
i 形式的符號名稱,其中 i 的範圍從 0 到 ?GL_MAX_LIGHTS
- 1 的值。?GL_MAX_LIGHTS
是一個實作相依的常數,大於或等於 8。 Pname
會透過符號名稱指定十個光源參數之一。
glMap1
和 glMap2
定義求值器。gl:getMap()
會傳回求值器參數。Target
會選擇一個對應,Query
會選擇一個特定的參數,而 V
會指向儲存將傳回值的儲存區。
gl:getMaterial()
會在 Params
中傳回材質 Face
的參數 Pname
的值。定義了六個參數
gl:getMinmax/5
會傳回累積的最小和最大像素值 (以每個元件為基礎計算),在寬度為 2 的一維影像中。第一組傳回值是最小值,而第二組傳回值是最大值。傳回值的格式由 Format
決定,而其類型則由 Types
決定。
gl:getMinmaxParameter()
會透過將 Pname
設定為下列其中一個值來檢索目前最小最大值表的參數
gl:getMultisamplefv/2
會查詢指定樣本的位置。Pname
會指定要檢索的樣本參數,且必須是 ?GL_SAMPLE_POSITION
。Index
對應於應傳回位置的樣本。樣本位置會以 Val[0]
和 Val[1]
中的兩個浮點數值傳回,每個值都在 0 到 1 之間,分別對應於該樣本在 GL 像素空間中的 X
和 Y
位置。(0.5, 0.5) 這對應於像素中心。Index
必須介於 0 到 ?GL_SAMPLES
減 1 的值之間。
請參閱 gl:pixelMap()
參考頁面,以取得 Map
參數的可接受值說明。gl:getPixelMap()
會在 Data
中傳回 Map
中指定的像素對應的內容。像素對應在執行 gl:readPixels/7
、gl:drawPixels/5
、gl:copyPixels/5
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
、gl:texSubImage3D/11
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
和 gl:copyTexSubImage3D/9
時使用,以將色彩索引、樣板索引、色彩元件和深度元件對應到其他值。
gl:getPolygonStipple/0
會將 32×32 多邊形點畫圖案傳回至 Pattern
。圖案會像呼叫 gl:readPixels/7
,且 height
和 width
均為 32,type
為 ?GL_BITMAP
,而 format
為 ?GL_COLOR_INDEX
,且點畫圖案儲存在內部 32×32 色彩索引緩衝區中一樣,將圖案封裝到記憶體中。然而,與 gl:readPixels/7
不同的是,像素傳輸操作 (位移、偏移、像素對應) 不會套用至傳回的點畫影像。
gl:getProgramBinary/2
會將 Program
已編譯和連結的可執行檔的二進位表示法傳回至位元組陣列,其位址在 Binary
中指定。Binary
中可寫入的最大位元組數由 BufSize
指定。如果程式二進位的大小大於 BufSize
位元組,則會產生錯誤,否則寫入 Binary
的實際位元組數會傳回至位址由 Length
給定的變數。如果 Length
為 ?NULL
,則不會傳回任何長度。
gl:getProgramInfoLog/2
會傳回指定程式物件的資訊記錄。當程式物件連結或驗證時,會修改程式物件的資訊記錄。傳回的字串將以 null 結尾。
gl:getProgramInterfaceiv/3
查詢由 Program
中的 ProgramInterface
所識別的介面屬性,其屬性名稱由 Pname
給定。
gl:getProgram()
在 Params
中傳回特定程式物件的參數值。定義了以下參數
gl:getProgramPipelineInfoLog/2
擷取程式管線物件 Pipeline
的資訊日誌。資訊日誌,包括其空終止符,會寫入位址由 InfoLog
給定的字元陣列中。InfoLog
中可寫入的最大字元數由 BufSize
給定,而寫入 InfoLog
的實際字元數會傳回在位址由 Length
給定的整數中。如果 Length
為 ?NULL
,則不會傳回長度。
gl:getProgramPipelineiv/2
擷取程式管線物件 Pipeline
的屬性值。Pname
指定要擷取其值的參數名稱。參數的值會寫入位址由 Params
給定的變數。
gl:getProgramResourceIndex/3
傳回指派給程式物件 Program
的介面類型 ProgramInterface
中名為 Name
的資源的無符號整數索引。
gl:getProgramResourceLocation/3
傳回指派給程式物件 Program
的介面 ProgramInterface
中名為 Name
的變數的位置。Program
必須是已成功連結的程式的名稱。ProgramInterface
必須是 ?GL_UNIFORM
、?GL_PROGRAM_INPUT
、?GL_PROGRAM_OUTPUT
、?GL_VERTEX_SUBROUTINE_UNIFORM
、?GL_TESS_CONTROL_SUBROUTINE_UNIFORM
、?GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
、?GL_GEOMETRY_SUBROUTINE_UNIFORM
、?GL_FRAGMENT_SUBROUTINE_UNIFORM
、?GL_COMPUTE_SUBROUTINE_UNIFORM
或 ?GL_TRANSFORM_FEEDBACK_BUFFER
其中之一。
gl:getProgramResourceLocationIndex/3
傳回指派給程式物件 Program
的介面 ProgramInterface
中名為 Name
的變數的片段顏色索引。Program
必須是已成功連結的程式的名稱。ProgramInterface
必須是 ?GL_PROGRAM_OUTPUT
。
gl:getProgramResourceName/4
擷取指派給程式物件 Program
的介面 ProgramInterface
中索引為 Index
的單一作用中資源的名稱字串。Index
必須小於 ProgramInterface
的作用中資源列表中的項目數。
gl:getProgramStage()
查詢附加到程式物件的著色器階段的參數。Program
包含附加著色器的程式名稱。Shadertype
指定要從中查詢參數的階段。Pname
指定應查詢哪個參數。要查詢的參數值會傳回在位址由 Values
給定的變數中。
gl:getQueryIndexediv/3
在 Params
中傳回由 Target
和 Index
指定的索引查詢物件目標的選定參數。Index
指定查詢物件目標的索引,且必須介於零和目標特定的最大值之間。
gl:getQueryiv/2
在 Params
中傳回由 Target
指定的查詢物件目標的選定參數。
這些命令傳回由 Id
指定的查詢物件的選定參數。gl:getQueryObject()
在 Params
中傳回由 Id
指定的查詢物件的選定參數。gl:getQueryBufferObject()
透過將其寫入 Buffer
的資料儲存區中,以由 Offset
指定的位元組偏移量,傳回由 Id
指定的查詢物件的選定參數。
gl:getRenderbufferParameteriv/2
和 glGetNamedRenderbufferParameteriv
查詢指定的渲染緩衝區物件的參數。
gl:getSamplerParameter()
在 Params
中傳回指定為 Pname
的取樣器參數值。Sampler
定義目標取樣器,且必須是現有取樣器物件的名稱,從先前呼叫 gl:genSamplers/1
傳回。Pname
接受與 gl:samplerParameter()
相同的符號,具有相同的解釋。
gl:getShaderInfoLog/2
傳回指定著色器物件的資訊日誌。當編譯著色器時,會修改著色器物件的資訊日誌。傳回的字串將會以空字元結尾。
gl:getShader()
在 Params
中傳回特定著色器物件的參數值。定義了以下參數
gl:getShaderPrecisionFormat/2
擷取在指定著色器類型中,以不同數值格式表示數量的實作數值範圍和精確度。ShaderType
指定要擷取其數值精確度和範圍的著色器類型,且必須是 ?GL_VERTEX_SHADER
或 ?GL_FRAGMENT_SHADER
其中之一。PrecisionType
指定要查詢的數值格式,且必須是 ?GL_LOW_FLOAT
、?GL_MEDIUM_FLOAT``?GL_HIGH_FLOAT
、?GL_LOW_INT
、?GL_MEDIUM_INT
或 ?GL_HIGH_INT
其中之一。
gl:getShaderSource/2
傳回由 Shader
指定的著色器物件的原始碼字串串聯。著色器物件的原始碼字串是先前呼叫 gl:shaderSource/2
的結果。此函式傳回的字串將會以空字元結尾。
gl:getString/1
傳回指向描述目前 GL 連線某些方面的靜態字串的指標。Name
可以是以下其中之一
gl:getSubroutineIndex/3
傳回附加到程式物件的著色器階段中的子程式一致變數的索引。Program
包含附加著色器的程式名稱。Shadertype
指定要從中查詢著色器子程式索引的階段。Name
包含要查詢其名稱的子程式一致變數的空終止名稱。
gl:getSubroutineUniformLocation/3
傳回附加到 Program
的類型為 Shadertype
的著色器階段中子程式一致變數 Name
的位置,其行為與 gl:getUniformLocation/2
相同。
gl:getSynciv/3
擷取同步物件的屬性。Sync
指定要擷取其屬性的同步物件的名稱。
gl:getTexEnv()
在 Params
中傳回使用 gl:texEnv()
指定的紋理環境的選定值。Target
指定紋理環境。
gl:getTexGen()
在 Params
中傳回使用 gl:texGen()
指定的紋理座標產生函式的選定參數。Coord
使用符號常數 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
,命名其中一個 (s
、t
、r
、q
) 紋理座標。
gl:getTexImage/5
、glGetnTexImage
和 glGetTextureImage
函式會將紋理影像回傳到 Pixels
中。對於 gl:getTexImage/5
和 glGetnTexImage
,Target
指定所需的紋理影像是由 gl:texImage1D/8
(?GL_TEXTURE_1D
)、gl:texImage2D/9
(?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_2D
或任何 ?GL_TEXTURE_CUBE_MAP_*
) 或 gl:texImage3D/10
(?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP_ARRAY
) 所指定。對於 glGetTextureImage
,Texture
指定紋理物件名稱。除了 gl:getTexImage/5
和 glGetnTexImage
接受的紋理類型外,此函式也接受立方體貼圖紋理物件 (具有有效目標 ?GL_TEXTURE_CUBE_MAP
)。Level
指定所需影像的詳細層級編號。Format
和 Type
指定所需影像陣列的格式和類型。請參閱 gl:texImage1D/8
的參考頁面,以了解 Format
和 Type
參數的可接受值。對於 glGetnTexImage 和 glGetTextureImage 函式,bufSize 會告知接收擷取像素資料的緩衝區大小。glGetnTexImage
和 glGetTextureImage
不會將超過 BufSize
個位元組寫入到 Pixels
中。
gl:getTexLevelParameterfv/3
、gl:getTexLevelParameteriv/3
、glGetTextureLevelParameterfv
和 glGetTextureLevelParameteriv
會在 Params
中回傳特定詳細層級值 (指定為 Level
) 的紋理參數值。對於前兩個函式,Target
定義目標紋理,其為 ?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_PROXY_TEXTURE_1D
、?GL_PROXY_TEXTURE_2D
、?GL_PROXY_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP_POSITIVE_X
、?GL_TEXTURE_CUBE_MAP_NEGATIVE_X
、?GL_TEXTURE_CUBE_MAP_POSITIVE_Y
、?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
、?GL_TEXTURE_CUBE_MAP_POSITIVE_Z
、?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
或 ?GL_PROXY_TEXTURE_CUBE_MAP
。剩餘的兩個函式會採用 Texture
引數,該引數指定紋理物件的名稱。
gl:getTexParameter()
和 glGetTextureParameter
會在 Params
中回傳指定為 Pname
的紋理參數的值。 Target
定義目標紋理。?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
分別指定一維、二維或三維、一維陣列、二維陣列、矩形、立方體貼圖或立方體貼圖陣列、二維多重採樣或二維多重採樣陣列紋理。Pname
接受與 gl:texParameter()
相同的符號,並具有相同的解譯。
可以透過呼叫 gl:getTransformFeedbackVarying/3
來擷取有關連結程式中將在轉換回饋期間擷取的 varying 變數集資訊。gl:getTransformFeedbackVarying/3
提供有關由 Index
選取的 varying 變數的資訊。 Index
為 0 會選取傳遞至 gl:transformFeedbackVaryings/3
的 Varyings
陣列中所指定的第一個 varying 變數,而 Index
的值為 ?GL_TRANSFORM_FEEDBACK_VARYINGS
減一則會選取最後一個這類變數。
gl:getUniformBlockIndex/2
會擷取 Program
內均勻區塊的索引。
gl:getUniformIndices/2
會擷取 Program
內多個均勻變數的索引。
glGetUniformLocation
會回傳一個整數,該整數代表程式物件內特定均勻變數的位置。Name
必須是以 null 終止且不包含空白字元的字串。Name
必須是 Program
中不是結構、結構陣列或向量或矩陣子元件的活動均勻變數名稱。如果 Name
沒有對應於 Program
中的活動均勻變數、如果 Name
以保留字首 "gl_" 開頭,或如果 Name
與原子計數器或具名均勻區塊相關聯,則此函式會回傳 -1。
gl:getUniformSubroutine()
會擷取目前程式的著色器階段 Shadertype
的位置 Location
中副程式均勻變數的值。 Location
必須小於目前在著色器階段 Shadertype
使用的著色器的 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
值。副程式均勻變數的值會在 Values
中回傳。
gl:getUniform()
和 glGetnUniform
會在 Params
中回傳指定均勻變數的值。由 Location
指定的均勻變數類型決定回傳的值數。如果均勻變數在著色器中定義為布林值、整數或浮點數,則會回傳單一值。如果定義為 vec2、ivec2 或 bvec2,則會回傳兩個值。如果定義為 vec3、ivec3 或 bvec3,則會回傳三個值,依此類推。若要查詢儲存在宣告為陣列的均勻變數中的值,請針對陣列的每個元素呼叫 gl:getUniform()
。若要查詢儲存在宣告為結構的均勻變數中的值,請針對結構中的每個欄位呼叫 gl:getUniform()
。宣告為矩陣的均勻變數的值會以欄主序回傳。
gl:getVertexAttrib()
會在 Params
中回傳一般頂點屬性參數的值。要查詢的一般頂點屬性是由 Index
指定,而要查詢的參數是由 Pname
指定。
在有解譯空間時,GL 行為的某些方面可以使用提示來控制。提示會以兩個引數指定。 Target
是一個符號常數,指示要控制的行為,而 Mode
是另一個符號常數,指示所需的行為。每個 Target
的初始值為 ?GL_DONT_CARE
。Mode
可以是下列其中之一
當啟用 ?GL_HISTOGRAM
時,RGBA 顏色元件會透過限制在 [0,1] 範圍、乘以直方圖表格的寬度,並四捨五入到最接近的整數來轉換為直方圖表格索引。然後,會遞增由 RGBA 索引選取的表格項目。(如果直方圖表格的內部格式包含亮度,則從 R 顏色元件衍生的索引會決定要遞增的亮度表格項目。)如果直方圖表格項目的遞增值超過其最大值,則其值會變成未定義。(這不是錯誤。)
等同於 indexubv/1
。
等同於 indexubv/1
。
等同於 indexubv/1
。
等同於 indexubv/1
。
等同於 indexubv/1
。
等同於 indexubv/1
。
gl:indexMask/1
控制顏色索引緩衝區中個別位元的寫入。Mask
的最低有效位 n 位 (其中 n 是顏色索引緩衝區中的位元數) 會指定遮罩。當遮罩中出現 1 (一) 時,就可以寫入顏色索引緩衝區 (或多個緩衝區) 中的對應位元。當出現 0 (零) 時,對應的位元會受到寫入保護。
gl:indexPointer/3
指定要轉譯時所使用的顏色索引陣列的位置和資料格式。Type
指定每個顏色索引的資料類型,而 Stride
指定從一個顏色索引到下一個顏色索引的位元組跨距,允許將頂點和屬性封裝到單一陣列中或儲存在個別陣列中。
等同於 indexubv/1
。
等同於 indexubv/1
。
等同於 indexubv/1
。
gl:index()
更新目前的(單一值)顏色索引。它接受一個參數,即目前顏色索引的新值。
名稱堆疊在選取模式期間使用,以允許唯一識別渲染命令的集合。它由一組已排序的無符號整數組成。gl:initNames/0
會將名稱堆疊初始化為其預設的空狀態。
gl:interleavedArrays/3
允許您指定並啟用個別的顏色、法線、紋理和頂點陣列,其元素是較大聚合陣列元素的一部分。對於某些實作,這比單獨指定陣列更有效率。
gl:invalidateBufferData/1
使緩衝區物件的資料儲存區的所有內容失效。失效後,緩衝區資料儲存區的內容會變成未定義。
gl:invalidateBufferSubData/3
使緩衝區物件的資料儲存區的全部或部分內容失效。失效後,緩衝區資料儲存區指定範圍的內容會變成未定義。範圍的起始位置由 Offset
給定,其大小由 Length
給定,兩者均以基本機器單位測量。
gl:invalidateFramebuffer/2
和 glInvalidateNamedFramebufferData
使影格緩衝區指定的一組附件的全部內容失效。
gl:invalidateSubFramebuffer/6
和 glInvalidateNamedFramebufferSubData
使影格緩衝區指定的一組附件的指定區域的內容失效。
gl:invalidateTexSubImage/8
使整個紋理影像失效。Texture
和 Level
指示要失效的紋理影像。此命令之後,紋理影像中的資料具有未定義的值。
gl:invalidateTexSubImage/8
使紋理影像的全部或部分失效。Texture
和 Level
指示要失效的紋理影像。此命令之後,該子區域中的資料具有未定義的值。Xoffset
、Yoffset
、Zoffset
、Width
、Height
和 Depth
的解讀方式與 gl:texSubImage3D/11
中相同。對於不具有特定維度的紋理目標,此命令會將這些維度視為大小為 1。例如,若要使二維紋理的一部分失效,應用程式會使用等於零的 Zoffset
和等於一的 Depth
。立方體貼圖紋理會被視為 z 維度中的六個切片的陣列,其中 Zoffset
的值會被解讀為指定面 ?GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ Zoffset
。
如果 Buffer
目前是緩衝區物件的名稱,gl:isBuffer/1
會傳回 ?GL_TRUE
。如果 Buffer
為零,或是一個非零值,但目前不是緩衝區物件的名稱,或是發生錯誤,gl:isBuffer/1
會傳回 ?GL_FALSE
。
如果 Cap
是一個已啟用的功能,gl:isEnabled/1
會傳回 ?GL_TRUE
,否則會傳回 ?GL_FALSE
。可以使用 gl:isEnabledi/2
測試已建立索引的布林狀態。對於 gl:isEnabledi/2
,Index
指定要測試的功能索引。Index
必須介於零和 Cap
的已建立索引的功能計數之間。一開始,除了 ?GL_DITHER
之外的所有功能都會停用;?GL_DITHER
一開始會啟用。
如果 Framebuffer
目前是影格緩衝區物件的名稱,gl:isFramebuffer/1
會傳回 ?GL_TRUE
。如果 Framebuffer
為零,或如果 ?framebuffer
不是影格緩衝區物件的名稱,或是發生錯誤,gl:isFramebuffer/1
會傳回 ?GL_FALSE
。如果 Framebuffer
是由 gl:genFramebuffers/1
傳回的名稱,但尚未透過呼叫 gl:bindFramebuffer/2
來繫結,則該名稱不是影格緩衝區物件,而 gl:isFramebuffer/1
會傳回 ?GL_FALSE
。
如果 List
是顯示清單的名稱,gl:isList/1
會傳回 ?GL_TRUE
,如果不是,或是發生錯誤,則會傳回 ?GL_FALSE
。
如果 Program
是先前使用 gl:createProgram/0
建立且尚未透過 gl:deleteProgram/1
刪除的程式物件名稱,gl:isProgram/1
會傳回 ?GL_TRUE
。如果 Program
為零或是一個非零值,但不是程式物件的名稱,或是發生錯誤,gl:isProgram/1
會傳回 ?GL_FALSE
。
如果 Pipeline
目前是程式管線物件的名稱,gl:isProgramPipeline/1
會傳回 ?GL_TRUE
。如果 Pipeline
為零,或如果 ?pipeline
不是程式管線物件的名稱,或是發生錯誤,gl:isProgramPipeline/1
會傳回 ?GL_FALSE
。如果 Pipeline
是由 gl:genProgramPipelines/1
傳回的名稱,但尚未透過呼叫 gl:bindProgramPipeline/1
來繫結,則該名稱不是程式管線物件,而 gl:isProgramPipeline/1
會傳回 ?GL_FALSE
。
如果 Id
目前是查詢物件的名稱,gl:isQuery/1
會傳回 ?GL_TRUE
。如果 Id
為零,或是一個非零值,但目前不是查詢物件的名稱,或是發生錯誤,gl:isQuery/1
會傳回 ?GL_FALSE
。
如果 Renderbuffer
目前是渲染緩衝區物件的名稱,gl:isRenderbuffer/1
會傳回 ?GL_TRUE
。如果 Renderbuffer
為零,或如果 Renderbuffer
不是渲染緩衝區物件的名稱,或是發生錯誤,gl:isRenderbuffer/1
會傳回 ?GL_FALSE
。如果 Renderbuffer
是由 gl:genRenderbuffers/1
傳回的名稱,但尚未透過呼叫 gl:bindRenderbuffer/2
或 gl:framebufferRenderbuffer/4
來繫結,則該名稱不是渲染緩衝區物件,而 gl:isRenderbuffer/1
會傳回 ?GL_FALSE
。
如果 Id
目前是取樣器物件的名稱,gl:isSampler/1
會傳回 ?GL_TRUE
。如果 Id
為零,或是一個非零值,但目前不是取樣器物件的名稱,或是發生錯誤,gl:isSampler/1
會傳回 ?GL_FALSE
。
如果 Shader
是先前使用 gl:createShader/1
建立且尚未透過 gl:deleteShader/1
刪除的著色器物件名稱,gl:isShader/1
會傳回 ?GL_TRUE
。如果 Shader
為零或是一個非零值,但不是著色器物件的名稱,或是發生錯誤,glIsShader
會傳回 ?GL_FALSE
。
如果 Sync
目前是同步物件的名稱,gl:isSync/1
會傳回 ?GL_TRUE
。如果 Sync
不是同步物件的名稱,或是發生錯誤,gl:isSync/1
會傳回 ?GL_FALSE
。請注意,零不是同步物件的名稱。
如果 Texture
目前是紋理的名稱,gl:isTexture/1
會傳回 ?GL_TRUE
。如果 Texture
為零,或是一個非零值,但目前不是紋理的名稱,或是發生錯誤,gl:isTexture/1
會傳回 ?GL_FALSE
。
如果 Id
目前是轉換回饋物件的名稱,gl:isTransformFeedback/1
會傳回 ?GL_TRUE
。如果 Id
為零,或如果 ?id
不是轉換回饋物件的名稱,或是發生錯誤,gl:isTransformFeedback/1
會傳回 ?GL_FALSE
。如果 Id
是由 gl:genTransformFeedbacks/1
傳回的名稱,但尚未透過呼叫 gl:bindTransformFeedback/2
來繫結,則該名稱不是轉換回饋物件,而 gl:isTransformFeedback/1
會傳回 ?GL_FALSE
。
如果 Array
目前是頂點陣列物件的名稱,gl:isVertexArray/1
會傳回 ?GL_TRUE
。如果 Array
為零,或如果 Array
不是頂點陣列物件的名稱,或是發生錯誤,gl:isVertexArray/1
會傳回 ?GL_FALSE
。如果 Array
是由 gl:genVertexArrays/1
傳回的名稱,但尚未透過呼叫 gl:bindVertexArray/1
來繫結,則該名稱不是頂點陣列物件,而 gl:isVertexArray/1
會傳回 ?GL_FALSE
。
gl:light()
設定個別光源參數的值。Light
會命名光源,並且是 ?GL_LIGHT
i 形式的符號名稱,其中 i 的範圍從 0 到 ?GL_MAX_LIGHTS
- 1 的值。Pname
會再次使用符號名稱指定十個光源參數之一。Params
是單一值或包含新值的陣列指標。
gl:lightModel()
設定光照模型參數。Pname
指定參數名稱,而 Params
提供新的值。光照模型參數共有三個:
線段虛線化會遮蔽光柵化產生的某些片段;這些片段將不會被繪製。遮蔽是透過使用三個參數來實現的:16 位元的線段虛線模式 Pattern
、重複次數 Factor
和整數虛線計數器 s。
gl:lineWidth/1
指定反鋸齒和非反鋸齒線段的光柵化寬度。使用寬度非 1 的線段,會根據是否啟用線段反鋸齒而有不同的效果。若要啟用和停用線段反鋸齒,請使用 ?GL_LINE_SMOOTH
參數呼叫 gl:enable/1
和 gl:disable/1
。線段反鋸齒預設為停用。
gl:linkProgram/1
連結由 Program
指定的程式物件。如果任何類型為 ?GL_VERTEX_SHADER
的著色器物件附加到 Program
,它們將用於建立在可編程頂點處理器上執行的可執行檔。如果任何類型為 ?GL_GEOMETRY_SHADER
的著色器物件附加到 Program
,它們將用於建立在可編程幾何處理器上執行的可執行檔。如果任何類型為 ?GL_FRAGMENT_SHADER
的著色器物件附加到 Program
,它們將用於建立在可編程片段處理器上執行的可執行檔。
gl:callLists/1
指定一組偏移量陣列。顯示列表名稱是透過將 Base
加到每個偏移量來產生的。參考有效顯示列表的名稱會被執行;其他名稱則會被忽略。
gl:loadIdentity/0
使用單位矩陣取代目前的矩陣。這在語義上等同於使用單位矩陣呼叫 gl:loadMatrix()
。
gl:loadMatrix()
使用由 M
指定其元素的矩陣取代目前的矩陣。目前的矩陣是投影矩陣、模型視圖矩陣或紋理矩陣,取決於目前的矩陣模式(請參閱 gl:matrixMode/1
)。
名稱堆疊用於選取模式,以允許唯一識別一組渲染指令。它由一組有序的無符號整數組成,且初始為空。
gl:loadTransposeMatrix()
使用由 M
指定其元素的矩陣取代目前的矩陣。目前的矩陣是投影矩陣、模型視圖矩陣或紋理矩陣,取決於目前的矩陣模式(請參閱 gl:matrixMode/1
)。
gl:logicOp/1
指定一個邏輯運算,當啟用時,該運算會應用於傳入的 RGBA 顏色和幀緩衝區中對應位置的 RGBA 顏色之間。若要啟用或停用邏輯運算,請使用符號常數 ?GL_COLOR_LOGIC_OP
呼叫 gl:enable/1
和 gl:disable/1
。初始值為停用。
評估器提供了一種方法,可以使用多項式或有理多項式映射來產生頂點、法線、紋理座標和顏色。評估器產生的值會被發送到 GL 處理的後續階段,就像它們是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈現的一樣,但產生的值不會更新目前的法線、紋理座標或顏色。
評估器提供了一種方法,可以使用多項式或有理多項式映射來產生頂點、法線、紋理座標和顏色。評估器產生的值會被發送到 GL 處理的後續階段,就像它們是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈現的一樣,但產生的值不會更新目前的法線、紋理座標或顏色。
gl:mapGrid()
和 gl:evalMesh()
一起使用,以有效產生和評估一系列均勻間隔的映射域值。gl:evalMesh()
會逐步執行一維或二維格子的整數域,其範圍是由 glMap1
和 glMap2
指定的評估映射域。
gl:material()
將值指派給材質參數。材質參數有兩組匹配的集合。其中一組是 front-facing
集合,用於為點、線段、點陣圖和所有多邊形(當停用雙面光照時)或僅為正面多邊形(當啟用雙面光照時)著色。另一組 back-facing
僅用於在啟用雙面光照時為背面多邊形著色。有關單面和雙面光照計算的詳細資訊,請參閱 gl:lightModel()
參考頁面。
gl:matrixMode/1
設定目前的矩陣模式。Mode
可以採用四個值之一:
gl:memoryBarrier/1
定義一個屏障,排序在命令之前發出的記憶體交易相對於屏障之後發出的記憶體交易。就此排序而言,著色器執行的記憶體交易被視為由觸發著色器執行的渲染命令發出。Barriers
是一個位欄位,指示與著色器儲存同步的一組操作;Barriers
中使用的位元如下:
當啟用 ?GL_MINMAX
時,傳入像素的 RGBA 元件會與每個元件的最小值和最大值進行比較,這些值儲存在雙元素 minmax 表中。(第一個元素儲存最小值,第二個元素儲存最大值。)如果像素元件大於最大元素中對應的元件,則會使用像素元件值更新最大元素。如果像素元件小於最小元素中對應的元件,則會使用像素元件值更新最小元素。(在這兩種情況下,如果 minmax 表的內部格式包含亮度,則傳入像素的 R 顏色元件將用於比較。)minmax 表的內容可以在稍後透過呼叫 gl:getMinmax/5
來擷取。minmax 操作可透過分別使用 ?GL_MINMAX
參數呼叫 gl:enable/1
或 gl:disable/1
來啟用或停用。
gl:minSampleShading/1
指定在覆蓋像素內對樣本進行著色的速率。透過使用參數 ?GL_SAMPLE_SHADING
呼叫 gl:enable/1
來啟用樣本速率著色。如果停用 ?GL_MULTISAMPLE
或 ?GL_SAMPLE_SHADING
,則樣本著色無效。否則,實作必須為每個覆蓋的片段提供至少與 Value
乘以 Samples
指定的唯一顏色值一樣多的數量,其中 Samples
是目前幀緩衝區的 ?GL_SAMPLES
值。每個覆蓋的片段至少會產生 1 個樣本。
gl:multiDrawArrays/3
使用非常少的子程序呼叫指定多組幾何圖元。您可以預先指定頂點、法線和顏色的獨立陣列,而不是呼叫 GL 程序來傳遞每個個別的頂點、法線、紋理座標、邊緣標誌或顏色,並且可以使用它們,透過單次呼叫 gl:multiDrawArrays/3
來建構一系列圖元。
gl:multiDrawArraysIndirect/4
使用非常少的子程序呼叫指定多個幾何圖元。gl:multiDrawArraysIndirect/4
的行為類似於多次呼叫 gl:drawArraysInstancedBaseInstance/5
,但每次呼叫 gl:drawArraysInstancedBaseInstance/5
的參數都儲存在記憶體中,其位址由 Indirect
給定,並以 Stride
指定的基本機器單元間隔。如果 Stride
為零,則假設陣列在記憶體中緊密封裝。
gl:multiTexCoord()
指定一維、二維、三維或四維的紋理座標。gl:multiTexCoord1()
將目前的紋理座標設為 (s 0 0 1);呼叫 gl:multiTexCoord2()
會將它們設為 (s t 0 1)。同樣地,gl:multiTexCoord3()
將紋理座標指定為 (s t r 1),而 gl:multiTexCoord4()
則明確定義所有四個分量為 (s t r q)。
gl:multMatrix()
將目前矩陣與使用 M
指定的矩陣相乘,並以乘積取代目前矩陣。
gl:multTransposeMatrix()
將目前矩陣與使用 M
指定的矩陣相乘,並以乘積取代目前矩陣。
顯示列表是已儲存供後續執行的 GL 命令群組。顯示列表是使用 gl:newList/2
建立的。所有後續命令都會依發出順序放入顯示列表中,直到呼叫 gl:endList/0
為止。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
每當發出 gl:normal()
時,目前的法線會設定為給定的座標。位元組、短整數或整數引數會轉換為浮點格式,並使用線性對應,將最大的正可表示整數值對應至 1.0,將最小的負可表示整數值對應至 -1.0。
gl:normalPointer/3
指定在算繪時要使用的法線陣列的位置和資料格式。Type
指定每個法線座標的資料類型,而 Stride
指定從一個法線到下一個法線的位元組跨距,允許將頂點和屬性封裝到單一陣列中,或儲存在個別的陣列中。(在某些實作中,單一陣列儲存可能更有效率;請參閱 gl:interleavedArrays/3
。)
gl:objectPtrLabel/3
為由 Ptr
識別的同步物件加上標籤。
gl:ortho/6
描述一個產生平行投影的轉換。目前矩陣(請參閱 gl:matrixMode/1
)會與此矩陣相乘,且結果會取代目前矩陣,就如同使用以下矩陣作為引數呼叫 gl:multMatrix()
一樣
gl:patchParameter()
指定將用於圖塊圖元的參數。Pname
指定要修改的參數,且必須是 ?GL_PATCH_VERTICES
、?GL_PATCH_DEFAULT_OUTER_LEVEL
或 ?GL_PATCH_DEFAULT_INNER_LEVEL
。對於 gl:patchParameteri/2
,Value
指定由 Pname
指定之參數的新值。對於 gl:patchParameterfv/2
,Values
指定包含由 Pname
指定之參數新值的陣列位址。
gl:pauseTransformFeedback/0
暫停目前作用中轉換回饋物件上的轉換回饋作業。當轉換回饋作業暫停時,轉換回饋仍視為作用中,且變更與物件相關的大部分轉換回饋狀態會導致錯誤。不過,可以在轉換回饋暫停時繫結新的轉換回饋物件。
gl:pixelMap()
設定由 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
使用的轉換表或 map
。此外,如果支援 ARB_imaging 子集,則例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
亦受影響。這些 map 的使用方式已完整描述於 gl:pixelTransfer()
參考頁中,部分描述於像素和紋理影像命令的參考頁中。在此參考頁中僅描述 map 的規格。
gl:pixelStore()
設定像素儲存模式,會影響後續 gl:readPixels/7
的操作,以及紋理圖樣的解包(請參閱 gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
、gl:texSubImage3D/11
)、gl:compressedTexImage1D/7
、gl:compressedTexImage2D/8
、gl:compressedTexImage3D/9
、gl:compressedTexSubImage1D/7
、gl:compressedTexSubImage2D/9
或 gl:compressedTexSubImage1D/7
。
gl:pixelTransfer()
設定像素傳輸模式,會影響後續 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
命令的操作。此外,如果支援 ARB_imaging 子集,則例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
亦受影響。由像素傳輸模式指定的演算法會在像素從影格緩衝區讀取 (gl:copyPixels/5
gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
和 gl:readPixels/7
),或從用戶端記憶體解包 (gl:drawPixels/5
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
) 後才進行操作。像素傳輸作業會以相同的順序,且以相同的方式進行,無論是哪個命令導致像素作業都一樣。像素儲存模式(請參閱 gl:pixelStore()
)控制從用戶端記憶體讀取像素時的解包,以及將像素寫回用戶端記憶體時的封裝。
gl:pixelZoom/2
指定 x 和 y 縮放因子的值。在執行 gl:drawPixels/5
或 gl:copyPixels/5
時,如果 (xr, yr) 是目前的點陣位置,且給定元素在像素矩形的第 m 列和第 n 行,則中心位於以下角落矩形內的像素:
下列數值可被接受為 Pname
gl:pointSize/1
指定點的點陣化直徑。如果點大小模式被禁用 (參見 gl:enable/1
,參數為 ?GL_PROGRAM_POINT_SIZE
),則此值將用於點陣化點。否則,將使用寫入著色語言內建變數 gl_PointSize 的值。
gl:polygonMode/2
控制多邊形用於點陣化的解譯方式。Face
描述 Mode
適用於哪些多邊形:正面和背面多邊形 (?GL_FRONT_AND_BACK
)。多邊形模式僅影響多邊形的最終點陣化。特別是,多邊形的頂點在套用這些模式之前會被光照、裁剪,並可能被剔除。
當啟用 ?GL_POLYGON_OFFSET_FILL
、?GL_POLYGON_OFFSET_LINE
或 ?GL_POLYGON_OFFSET_POINT
時,每個片段的 depth
值會在從適當頂點的 depth
值內插後偏移。偏移值為 factor×DZ+r×units,其中 DZ 是相對於多邊形螢幕區域的深度變化量測值,而 r 是保證在給定實作中產生可解析偏移的最小值。偏移會在執行深度測試之前以及在將值寫入深度緩衝區之前加入。
多邊形點畫,如同線條點畫 (參見 gl:lineStipple/2
),會遮蔽由點陣化產生的某些片段,以建立圖案。點畫與多邊形反鋸齒無關。
等同於 pushAttrib/1
。
等同於 pushMatrix/0
。
等同於 pushName/1
。
gl:primitiveRestartIndex/1
指定在啟用圖元重新啟動時特殊處理的頂點陣列元素。這被稱為圖元重新啟動索引。
gl:prioritizeTextures/2
將 Priorities
中給定的 N
個紋理優先權指派給 Textures
中命名的 N
個紋理。
gl:programBinary/3
使用先前從 gl:getProgramBinary/2
傳回的程式二進位檔載入程式物件。BinaryFormat
和 Binary
必須是先前呼叫 gl:getProgramBinary/2
所傳回的,而 Length
必須是 gl:getProgramBinary/2
傳回的長度,或是當 Pname
設定為 ?GL_PROGRAM_BINARY_LENGTH
時呼叫 gl:getProgram()
傳回的長度。如果未滿足這些條件,載入程式二進位檔將會失敗,且 Program
的 ?GL_LINK_STATUS
將會設定為 ?GL_FALSE
。
gl:programParameter()
為程式物件 Program
中由 Pname
指定的參數名稱指定新的值。
gl:programUniform()
修改統一變數或統一變數陣列的值。要修改的統一變數位置由 Location
指定,它應該是由 gl:getUniformLocation/2
傳回的值。gl:programUniform()
操作由 Program
指定的程式物件。
Flatshading
頂點著色器變動輸出意味著為圖元的全部頂點指派相同的輸出值。從中取得這些值的頂點稱為 provoking vertex
,而 gl:provokingVertex/1
指定要用作平面著色變動資料來源的頂點。
gl:pushAttrib/1
接受一個引數,此引數為遮罩,指示要儲存在屬性堆疊上的狀態變數群組。符號常數用於設定遮罩中的位元。Mask
通常是藉由將數個這些常數進行位元或運算來建構。特殊遮罩 ?GL_ALL_ATTRIB_BITS
可用於儲存所有可堆疊的狀態。
gl:pushClientAttrib/1
接受一個引數,此引數為遮罩,指示要儲存在用戶端屬性堆疊上的用戶端狀態變數群組。符號常數用於設定遮罩中的位元。Mask
通常是藉由將數個這些常數進行位元或運算來建構。特殊遮罩 ?GL_CLIENT_ALL_ATTRIB_BITS
可用於儲存所有可堆疊的用戶端狀態。
gl:pushDebugGroup/4
將由字串 Message
描述的偵錯群組推送至命令串流中。Id
的值指定所產生訊息的 ID。參數 Length
包含 Message
中的字元數。如果 Length
為負數,則表示 Message
包含 Null 終止字串。訊息具有指定的 Source
和 Id
,Type``?GL_DEBUG_TYPE_PUSH_GROUP
和 Severity``?GL_DEBUG_SEVERITY_NOTIFICATION
。GL 將把新的偵錯群組放在偵錯群組堆疊的頂端,該偵錯群組繼承先前位於偵錯群組堆疊頂端的偵錯群組之偵錯輸出量的控制。由於偵錯群組是嚴格分層的,因此對偵錯輸出量的任何額外控制將僅適用於作用中的偵錯群組以及推送在作用中偵錯群組頂端的偵錯群組內。
每個矩陣模式都有一個矩陣堆疊。在 ?GL_MODELVIEW
模式中,堆疊深度至少為 32。在其他模式 ( ?GL_COLOR
、?GL_PROJECTION
和 ?GL_TEXTURE
) 中,深度至少為 2。任何模式中的目前矩陣都是該模式堆疊頂端的矩陣。
名稱堆疊用於選取模式,以允許唯一識別一組渲染指令。它由一組有序的無符號整數組成,且初始為空。
gl:queryCounter/2
使 GL 將目前時間記錄到名為 Id
的查詢物件中。Target
必須為 ?GL_TIMESTAMP
。時間會在 GL 用戶端和伺服器狀態以及影格緩衝區上所有先前的命令都完全實現之後記錄。當記錄時間時,該物件的查詢結果會被標示為可用。gl:queryCounter/2
計時器查詢可以在目標為 ?GL_TIME_ELAPSED
的 gl:beginQuery/2
/ gl:endQuery/1
區塊內使用,而且不會影響該查詢物件的結果。
GL 維護一個在視窗座標中的 3D 位置。這個位置稱為光柵位置 (raster position),用於定位像素和點陣圖寫入操作。它以次像素精確度維護。請參閱 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。
gl:readBuffer/1
指定一個顏色緩衝區作為後續 gl:readPixels/7
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
和 gl:copyTexSubImage3D/9
命令的來源。模式
接受十二個或更多預定義值之一。在完全配置的系統中,?GL_FRONT
、?GL_LEFT
和 ?GL_FRONT_LEFT
都命名為前左緩衝區,?GL_FRONT_RIGHT
和 ?GL_RIGHT
命名為前右緩衝區,而 ?GL_BACK_LEFT
和 ?GL_BACK
命名為後左緩衝區。此外,常數 ?GL_COLOR_ATTACHMENT``i
可用於指示第 i
個顏色附件,其中 i
的範圍從零到 ?GL_MAX_COLOR_ATTACHMENTS
的值減一。
gl:readPixels/7
和 glReadnPixels
從影格緩衝區傳回像素資料,從左下角位於 (X
, Y
) 位置的像素開始,放入從 資料
位置開始的客戶端記憶體中。多個參數控制像素資料在放入客戶端記憶體之前的處理。這些參數使用 gl:pixelStore()
設定。此參考頁面描述了這些三個命令指定的大部分(但不是全部)參數對 gl:readPixels/7
和 glReadnPixels
的影響。
等效於 rectsv/2
。
等效於 rectsv/2
。
等效於 rectsv/2
。
gl:rect()
支援將矩形有效地指定為兩個角點。每個矩形命令接受四個參數,這些參數組織為兩個連續的 (x y) 座標對,或是指向陣列的兩個指標,每個指標都包含一個 (x y) 對。產生的矩形定義在 z=0 平面中。
gl:releaseShaderCompiler/0
向實作提供提示,使其可以釋放與其著色器編譯器相關聯的內部資源。gl:compileShader/1
隨後可能會被呼叫,而實作可能會在那時重新分配先前由呼叫 gl:releaseShaderCompiler/0
所釋放的資源。
gl:renderbufferStorage/4
等效於呼叫 gl:renderbufferStorageMultisample/5
並將 樣本
設定為零,而 glNamedRenderbufferStorage
等效於呼叫 glNamedRenderbufferStorageMultisample
並將樣本設定為零。
gl:renderbufferStorageMultisample/5
和 glNamedRenderbufferStorageMultisample
建立渲染緩衝區物件影像的資料儲存、格式、維度和樣本數。
gl:renderMode/1
設定光柵化模式。它接受一個參數,模式
,它可以採用三個預定義值之一
gl:resetHistogram/1
將目前直方圖表的所有元素重設為零。
gl:resetMinmax/1
將目前 minmax 表的元素重設為其初始值:``最大值'' 元素接收最小可能元件值,而 ``最小值'' 元素接收最大可能元件值。
gl:resumeTransformFeedback/0
在目前活動的轉換回饋物件上繼續轉換回饋操作。當轉換回饋操作暫停時,轉換回饋仍被視為處於活動狀態,並且變更與物件相關的大多數轉換回饋狀態會導致錯誤。但是,可以在暫停轉換回饋時繫結新的轉換回饋物件。
gl:rotate()
產生繞向量 (x y z) 旋轉 角度
度。目前的矩陣(請參閱 gl:matrixMode/1
)乘以旋轉矩陣,乘積取代目前的矩陣,就像使用以下矩陣作為其引數呼叫 gl:multMatrix()
一樣
多重取樣以各種與實作相關的次像素位置多次取樣像素,以產生反鋸齒效果。如果啟用多重取樣,它會透明地為點、線條、多邊形和影像進行反鋸齒處理。
gl:sampleMaski/2
設定多字組樣本遮罩 ?GL_SAMPLE_MASK_VALUE
的一個 32 位元子字。
gl:samplerParameter()
將 參數
中的值指派給指定為 Pname
的取樣器參數。取樣器
指定要修改的取樣器物件,且必須是先前從呼叫 gl:genSamplers/1
傳回的取樣器物件的名稱。Pname
中接受下列符號
等效於 scalef/3
。
gl:scale()
會沿 x
、y
和 z
軸產生不均勻縮放。這三個參數表示沿三個軸的每一個所需的縮放比例因子。
gl:scissor/4
在視窗座標中定義一個稱為剪裁框的矩形。前兩個引數 X
和 Y
指定方塊的左下角。寬度
和 高度
指定方塊的寬度和高度。
gl:scissorArrayv/2
為每個視埠定義在視窗座標中稱為剪裁框的矩形。第一個
指定要修改的第一個剪裁框的索引,而 計數
指定要修改的剪裁框的數量。第一個
必須小於 ?GL_MAX_VIEWPORTS
的值,而 第一個
+ 計數
必須小於或等於 ?GL_MAX_VIEWPORTS
的值。V
指定一個陣列的位址,該陣列包含指定剪裁框左下角以及剪裁框寬度和高度的整數 (依該順序)。
gl:scissorIndexed/5
為指定的視埠定義剪裁框。索引
指定要修改的剪裁框的索引。索引
必須小於 ?GL_MAX_VIEWPORTS
的值。對於 gl:scissorIndexed/5
,左
、下
、寬度
和 高度
分別指定剪裁框的左、下、寬度和高度 (以像素為單位)。對於 gl:scissorIndexedv/2
,V
指定一個陣列的位址,該陣列包含指定剪裁框左下角以及剪裁框寬度和高度的整數 (依該順序)。
GL 會儲存主要四值 RGBA 顏色和次要四值 RGBA 顏色 (其中 alpha 永遠設定為 0.0),這兩個顏色都與每個頂點相關聯。
gl:secondaryColorPointer/4
指定在算繪時要使用的顏色元件陣列的位置和資料格式。大小
指定每個顏色的元件數,並且必須為 3。類型
指定每個顏色元件的資料類型,而 間隔
指定從一個顏色到下一個顏色的位元組間隔,允許將頂點和屬性封裝到單一陣列中或儲存在單獨的陣列中。
gl:selectBuffer/2
有兩個引數:緩衝區
是指向不帶正負號的整數陣列的指標,而 大小
表示陣列的大小。緩衝區
在算繪模式為 ?GL_SELECT
時傳回名稱堆疊中的值(請參閱 gl:initNames/0
、gl:loadName/1
、gl:pushName/1
)。(請參閱 gl:renderMode/1
)。必須在啟用選擇模式之前發出 gl:selectBuffer/2
,並且在算繪模式為 ?GL_SELECT
時不得發出此命令。
gl:separableFilter2D/8
從兩個像素陣列建置二維可分離捲積濾波器核心。
GL 基本圖元可以具有平面或平滑著色。平滑著色(預設值)會導致在光柵化基本圖元時內插頂點的計算顏色,通常會為每個產生的像素片段指派不同的顏色。平面著色只選取一個頂點的計算顏色,並將其指派給光柵化單個基本圖元所產生的所有像素片段。在任一種情況下,頂點的計算顏色都是在啟用光照時光照的結果,或者是在停用光照時指定頂點時的目前顏色。
gl:shaderBinary/3
將預先編譯的著色器二進制碼載入到 Count
個著色器物件中,這些物件的句柄在 Shaders
中給出。Binary
指向儲存在客戶端記憶體中的 Length
位元組的二進制著色器碼。BinaryFormat
指定預編譯碼的格式。
gl:shaderSource/2
將 Shader
中的原始碼設定為 String
指定的字串陣列中的原始碼。先前儲存在著色器物件中的任何原始碼都會被完全替換。陣列中的字串數量由 Count
指定。如果 Length
為 ?NULL
,則假設每個字串都以 null 終止。如果 Length
是 ?NULL
以外的值,它會指向一個陣列,其中包含 String
中每個對應元素的字串長度。Length
陣列中的每個元素可以包含相應字串的長度(null 字元不計為字串長度的一部分)或小於 0 的值,表示該字串以 null 終止。原始碼字串此時不會掃描或解析;它們只是複製到指定的著色器物件中。
gl:shaderStorageBlockBinding/3
更改程式物件 Program
中索引為 StorageBlockIndex
的活動著色器儲存區塊。StorageBlockIndex
必須是 Program
中的活動著色器儲存區塊索引。StorageBlockBinding
必須小於 ?GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
的值。如果成功,gl:shaderStorageBlockBinding/3
指定 Program
將使用綁定到綁定點 StorageBlockBinding
的緩衝區物件的資料儲存,以讀取和寫入由 StorageBlockIndex
識別的著色器儲存區塊中的緩衝區變數的值。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。首先使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。您可以使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
gl:stencilMask/1
控制模版平面中個別位的寫入。Mask
的最低有效 n 位(其中 n 是模版緩衝區中的位數)指定一個遮罩。遮罩中出現 1 的位置,可以寫入模版緩衝區中的對應位。出現 0 的位置,對應位受寫入保護。最初,所有位都啟用寫入。
gl:stencilMaskSeparate/2
控制模版平面中個別位的寫入。Mask
的最低有效 n 位(其中 n 是模版緩衝區中的位數)指定一個遮罩。遮罩中出現 1 的位置,可以寫入模版緩衝區中的對應位。出現 0 的位置,對應位受寫入保護。最初,所有位都啟用寫入。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。您可以使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。您可以使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
gl:texCoord()
指定一維、二維、三維或四維的紋理座標。gl:texCoord1()
將當前紋理座標設定為 (s 0 0 1);呼叫 gl:texCoord2()
將其設定為 (s t 0 1)。同樣,gl:texCoord3()
將紋理座標指定為 (s t r 1),而 gl:texCoord4()
則將所有四個分量明確定義為 (s t r q)。
gl:texCoordPointer/4
指定在渲染時要使用的紋理座標陣列的位置和資料格式。Size
指定每個紋理座標集的座標數量,並且必須為 1、2、3 或 4。Type
指定每個紋理座標的資料類型,而 Stride
指定從一個紋理座標集到下一個紋理座標集的位元組跨距,允許將頂點和屬性打包到單個陣列中或儲存在單獨的陣列中。(在某些實作中,單陣列儲存可能更有效率;請參閱 gl:interleavedArrays/3
。)
紋理環境指定在對片段進行紋理處理時如何解釋紋理值。當 Target
為 ?GL_TEXTURE_FILTER_CONTROL
時,Pname
必須為 ?GL_TEXTURE_LOD_BIAS
。當 Target
為 ?GL_TEXTURE_ENV
時,Pname
可以是 ?GL_TEXTURE_ENV_MODE
、?GL_TEXTURE_ENV_COLOR
、?GL_COMBINE_RGB
、?GL_COMBINE_ALPHA
、?GL_RGB_SCALE
、?GL_ALPHA_SCALE
、?GL_SRC0_RGB
、?GL_SRC1_RGB
、?GL_SRC2_RGB
、?GL_SRC0_ALPHA
、?GL_SRC1_ALPHA
或 ?GL_SRC2_ALPHA
。
gl:texGen()
選擇紋理座標生成函式或為其中一個函式提供係數。Coord
命名 (s
、t
、r
、q
) 紋理座標之一;它必須是符號 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
之一。Pname
必須是三個符號常數之一:?GL_TEXTURE_GEN_MODE
、?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
。如果 Pname
為 ?GL_TEXTURE_GEN_MODE
,則 Params
選擇一種模式,即 ?GL_OBJECT_LINEAR
、?GL_EYE_LINEAR
、?GL_SPHERE_MAP
、?GL_NORMAL_MAP
或 ?GL_REFLECTION_MAP
之一。如果 Pname
為 ?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
,則 Params
包含對應紋理生成函式的係數。
紋理處理將指定紋理影像的一部分映射到啟用紋理處理的每個圖形圖元。若要啟用和停用一維紋理處理,請使用引數 ?GL_TEXTURE_1D
呼叫 gl:enable/1
和 gl:disable/1
。
紋理貼圖允許著色器讀取影像陣列的元素。
gl:texImage2DMultisample/6
建立多重取樣紋理影像的資料儲存、格式、尺寸和取樣數量。
紋理處理將指定紋理影像的一部分映射到啟用紋理處理的每個圖形圖元。若要啟用和停用三維紋理處理,請使用引數 ?GL_TEXTURE_3D
呼叫 gl:enable/1
和 gl:disable/1
。
gl:texImage3DMultisample/7
建立多重取樣紋理影像的資料儲存、格式、尺寸和取樣數量。
gl:texParameter()
和 gl:textureParameter()
將 Params
中的值或多個值指派給指定為 Pname
的紋理參數。對於 gl:texParameter()
,Target
定義目標紋理,可以是 ?GL_TEXTURE_1D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
、?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
或 ?GL_TEXTURE_RECTANGLE
。以下符號可在 Pname
中接受
gl:texStorage1D/4
和 gl:textureStorage1D()
同時指定一維紋理所有層級的儲存需求。使用此命令指定紋理後,除非它是代理紋理,否則所有層級的格式和尺寸都會變成不可變的。但是,影像的內容仍然可以修改,但其儲存需求不得變更。此類紋理稱為 immutable-format
紋理。
gl:texStorage2D/5
和 gl:textureStorage2D()
同時指定二維紋理或一維紋理陣列所有層級的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則所有層級的格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
gl:texStorage2DMultisample/6
和 gl:textureStorage2DMultisample()
指定二維多重採樣紋理的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則其格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
gl:texStorage3D/6
和 gl:textureStorage3D()
同時指定三維、二維陣列或立方體貼圖陣列紋理所有層級的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則所有層級的格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
gl:texStorage3DMultisample/7
和 gl:textureStorage3DMultisample()
指定二維多重採樣陣列紋理的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則其格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
紋理映射將指定紋理影像的一部分映射到啟用紋理的每個圖形圖元上。要啟用或停用一維紋理,請使用參數 ?GL_TEXTURE_1D
呼叫 gl:enable/1
和 gl:disable/1
。
紋理映射將指定紋理影像的一部分映射到啟用紋理的每個圖形圖元上。
紋理映射將指定紋理影像的一部分映射到啟用紋理的每個圖形圖元上。
當著色器階段擷取紋素,且相同的紋素透過片段著色器輸出寫入時,渲染片段的值是未定義的,即使讀取和寫入不在同一個繪圖命令中也是如此。為了安全地透過後續繪圖命令中的紋素擷取讀取寫入紋素的結果,請在兩個繪圖命令之間呼叫 gl:textureBarrier/0
,以保證寫入已完成,並且在執行後續繪圖命令之前快取已失效。
gl:texBuffer/3
和 gl:textureBuffer/3
將指定緩衝區物件的資料儲存區附加到指定的紋理物件,並指定緩衝區物件中找到的紋理影像的儲存格式。紋理物件必須是緩衝區紋理。
gl:texBufferRange/5
和 gl:textureBufferRange/5
將指定緩衝區物件的資料儲存區範圍附加到指定的紋理物件,並指定緩衝區物件中找到的紋理影像的儲存格式。紋理物件必須是緩衝區紋理。
gl:textureView/8
將紋理物件初始化為別名,或是另一個紋理物件的視圖,與初始化的紋理共用部分或全部父紋理的資料儲存區。紋理
指定先前透過成功呼叫 gl:genTextures/1
所保留的名稱,但尚未繫結或給定目標。目標
指定新初始化紋理的目標,且必須與父紋理的目標相容,在下表中以 原始紋理
給定。
gl:transformFeedbackBufferBase/3
將緩衝區物件 緩衝區
繫結到變換回饋物件 Xfb
的索引 索引
處的繫結點。
gl:transformFeedbackBufferRange/5
將由 偏移
和 大小
表示的緩衝區物件 緩衝區
的範圍繫結到變換回饋物件 Xfb
的索引 索引
處的繫結點。
要記錄在變換回饋模式中的頂點或幾何著色器輸出的名稱,是使用 gl:transformFeedbackVaryings/3
指定的。當幾何著色器處於作用中時,變換回饋會記錄發射頂點中選取的幾何著色器輸出變數的值。否則,會記錄選取的頂點著色器輸出的值。
gl:translate()
產生 (x y z) 的平移。目前矩陣(請參閱 gl:matrixMode/1
)乘以這個平移矩陣,乘積取代目前矩陣,如同呼叫 gl:multMatrix()
時將以下矩陣作為其引數
使用 gl:uniformBlockBinding/3
指派作用中 Uniform 區塊的繫結點。每個程式的作用中 Uniform 區塊都有一個對應的 Uniform 緩衝區繫結點。程式
是先前已發出 gl:linkProgram/1
命令的程式物件的名稱。
gl:uniform()
修改 Uniform 變數或 Uniform 變數陣列的值。要修改的 Uniform 變數的位置由 位置
指定,它應該是由 gl:getUniformLocation/2
傳回的值。gl:uniform()
在呼叫 gl:useProgram/1
使其成為目前狀態一部分的程式物件上運作。
gl:uniformSubroutines()
使用來自 索引
的子常式索引,載入目前程式的著色器階段 著色器類型
的所有作用中子常式 Uniform,將 索引[i]
儲存到位置 I
的 Uniform。計數
必須等於目前使用中著色器階段 著色器類型
的程式的 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
值。此外,索引
中的所有值都必須小於著色器階段的 ?GL_ACTIVE_SUBROUTINES
值。
gl:useProgram/1
安裝由 程式
指定的程式物件作為目前渲染狀態的一部分。透過使用 gl:attachShader/2
將著色器物件成功附加到程式物件,使用 gl:compileShader/1
成功編譯著色器物件,並使用 gl:linkProgram/1
成功連結程式物件,在程式物件中建立一個或多個可執行檔。
gl:useProgramStages/3
將與指定的一組著色器階段相關聯的程式物件中的可執行檔繫結到由 管線
給定的程式管線物件。管線
指定要繫結可執行檔的程式管線物件。階段
包含一個邏輯組合位,表示在程式管線物件 管線
中使用 程式
內的著色器階段。階段
必須是 ?GL_VERTEX_SHADER_BIT
、?GL_TESS_CONTROL_SHADER_BIT
、?GL_TESS_EVALUATION_SHADER_BIT
、?GL_GEOMETRY_SHADER_BIT
、?GL_FRAGMENT_SHADER_BIT
和 ?GL_COMPUTE_SHADER_BIT
的邏輯組合。此外,可以指定特殊值 ?GL_ALL_SHADER_BITS
,表示應該將 程式
中包含的所有可執行檔安裝到 管線
中。
gl:validateProgram/1
檢查 程式
中包含的可執行檔是否可以在目前的 OpenGL 狀態下執行。驗證過程產生的資訊將儲存在 程式
的資訊日誌中。驗證資訊可能包含一個空字串,或者可能是一個包含有關目前程式物件如何與目前 OpenGL 狀態的其他部分互動的資訊的字串。這為 OpenGL 實作人員提供了一種方法,可以傳達有關為何目前程式效率低下、次佳、無法執行等等的更多資訊。
gl:validateProgramPipeline/1
指示實作驗證 Pipeline
中包含的著色器執行檔與目前的 GL 狀態。實作可能會利用此機會執行任何內部著色器修改,以確保在目前 GL 狀態下,已安裝的著色器能正確運作。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
gl:vertex()
命令在 gl:'begin'/1
/gl:'end'/0
配對中使用,以指定點、線和多邊形的頂點。當呼叫 gl:vertex()
時,目前的顏色、法線、紋理座標和霧座標會與頂點相關聯。
gl:vertexArrayElementBuffer/2
將 ID 為 Buffer
的緩衝區物件繫結到 ID 為 Vaobj
的頂點陣列物件的元素陣列緩衝區繫結點。如果 Buffer
為零,則會移除任何現有繫結到 Vaobj
的元素陣列緩衝區繫結。
gl:bindVertexBuffer/4
和 gl:vertexArrayVertexBuffer/5
將名為 Buffer
的緩衝區繫結到索引由 Bindingindex
給定的頂點緩衝區繫結點。gl:bindVertexBuffer/4
修改目前繫結的頂點陣列物件的繫結,而 gl:vertexArrayVertexBuffer/5
允許呼叫者使用名為 Vaobj
的引數指定頂點陣列物件的 ID,應修改該 ID 的繫結。Offset
和 Stride
分別指定緩衝區中第一個元素的偏移量和緩衝區中元素之間的距離,兩者均以基本機器單位測量。Bindingindex
必須小於 ?GL_MAX_VERTEX_ATTRIB_BINDINGS
的值。Offset
和 Stride
必須大於或等於零。如果 Buffer
為零,則會取消繫結目前繫結到指定繫結點的任何緩衝區。
gl:bindVertexBuffers/4
和 gl:vertexArrayVertexBuffers/5
將現有緩衝區物件陣列的儲存空間繫結到頂點陣列物件中指定數量的連續頂點緩衝區繫結點單位。對於 gl:bindVertexBuffers/4
,頂點陣列物件是目前繫結的頂點陣列物件。對於 gl:vertexArrayVertexBuffers/5
,Vaobj
是頂點陣列物件的名稱。
gl:vertexAttribBinding/2
和 gl:vertexArrayAttribBinding/3
建立頂點陣列物件的通用頂點屬性(其索引由 Attribindex
給定)與頂點緩衝區繫結(其索引由 Bindingindex
給定)之間的關聯。對於 gl:vertexAttribBinding/2
,受影響的頂點陣列物件是目前繫結的物件。對於 gl:vertexArrayAttribBinding/3
,Vaobj
是頂點陣列物件的名稱。
gl:vertexAttribDivisor/2
修改在單個繪製呼叫中渲染多個圖元實例時,通用頂點屬性前進的速度。如果 Divisor
為零,則位置 Index
的屬性會每個頂點前進一次。如果 Divisor
為非零值,則該屬性會每渲染 Divisor
個頂點集合的實例前進一次。如果屬性的 ?GL_VERTEX_ATTRIB_ARRAY_DIVISOR
值為非零值,則該屬性稱為已實例化。
gl:vertexAttrib()
系列進入點允許應用程式在編號位置傳遞通用頂點屬性。
gl:vertexAttribFormat/5
、gl:vertexAttribIFormat/4
和 gl:vertexAttribLFormat/4
,以及 gl:vertexArrayAttribFormat/6
、gl:vertexArrayAttribIFormat/5
和 gl:vertexArrayAttribLFormat/5
指定頂點陣列中資料的組織方式。前三個呼叫在繫結的頂點陣列物件上運作,而最後三個呼叫會修改 ID 為 Vaobj
的頂點陣列物件的狀態。Attribindex
指定要描述其資料配置的通用頂點屬性陣列的索引,且必須小於 ?GL_MAX_VERTEX_ATTRIBS
的值。
gl:vertexAttribPointer/6
、gl:vertexAttribIPointer/5
和 gl:vertexAttribLPointer/5
指定在渲染時要使用的索引 Index
處的通用頂點屬性陣列的位置和資料格式。Size
指定每個屬性的元件數,且必須為 1、2、3、4 或 ?GL_BGRA
。Type
指定每個元件的資料類型,而 Stride
指定從一個屬性到下一個屬性的位元組跨度,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。
gl:vertexBindingDivisor/2
和 gl:vertexArrayBindingDivisor/3
修改在單個繪圖命令中渲染多個圖元實例時,通用頂點屬性前進的速度。如果 Divisor
為零,則使用繫結到 Bindingindex
的緩衝區的屬性會每個頂點前進一次。如果 Divisor
為非零值,則該屬性會每渲染 Divisor
個頂點集合的實例前進一次。如果對應的 Divisor
值為非零值,則該屬性稱為 instanced
。
gl:vertexPointer/4
指定在渲染時要使用的頂點座標陣列的位置和資料格式。Size
指定每個頂點的座標數,且必須為 2、3 或 4。Type
指定每個座標的資料類型,而 Stride
指定從一個頂點到下一個頂點的位元組跨度,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。(在某些實作中,單陣列儲存可能更有效率;請參閱 gl:interleavedArrays/3
。)
gl:viewport/4
指定從正規化裝置座標到視窗座標的 x 和 y 的仿射轉換。令 (x nd y nd) 為正規化裝置座標。然後,視窗座標 (x w y w) 的計算方式如下
gl:viewportArrayv/2
同時指定多個視埠的參數。First
指定要修改的第一個視埠的索引,而 Count
指定要修改的視埠數。First
必須小於 ?GL_MAX_VIEWPORTS
的值,且 First
+ Count
必須小於或等於 ?GL_MAX_VIEWPORTS
的值。索引位於範圍 [First
, First
+ Count
) 之外的視埠不會被修改。V
包含浮點數值陣列的位址,該陣列依序指定每個視埠的左邊 (x)、底部 (y)、寬度 (w) 和高度 (h)。x 和 y 給出視埠的左下角位置,而 w 和 h 分別給出視埠的寬度和高度。視埠指定從正規化裝置座標到視窗座標的 x 和 y 的仿射轉換。令 (x nd y nd) 為正規化裝置座標。然後,視窗座標 (x w y w) 的計算方式如下
gl:viewportIndexedf/5
和 gl:viewportIndexedfv/2
指定單一視口的參數。Index
指定要修改的視口索引。Index
必須小於 ?GL_MAX_VIEWPORTS
的值。對於 gl:viewportIndexedf/5
,X
、Y
、W
和 H
分別以像素為單位指定視口的左側、底部、寬度和高度。對於 gl:viewportIndexedfv/2
,V
包含一個浮點數值陣列的地址,依序指定每個視口的左側 (x)、底部 (y)、寬度 (w) 和高度 (h)。x 和 y 給出視口左下角的坐標,而 w 和 h 給出視口的寬度和高度。視口指定了 x 和 y 從標準化裝置坐標到視窗坐標的仿射變換。令 (xnd, ynd) 為標準化裝置坐標。則視窗坐標 (xw, yw) 的計算方式如下:
gl:waitSync/3
會使 GL 伺服器阻塞並等待,直到 Sync
變為已發出訊號的狀態。Sync
是要等待的現有同步物件的名稱。Flags
和 Timeout
目前未使用,必須分別設定為零和特殊值 ?GL_TIMEOUT_IGNORED
。
GL 維護一個在視窗座標中的 3D 位置。這個位置稱為光柵位置 (raster position),用於定位像素和點陣圖寫入操作。它以次像素精確度維護。請參閱 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。
類型
-type clamp() :: float().
-type enum() :: non_neg_integer().
-type f() :: float().
-type i() :: integer().
-type offset() :: non_neg_integer().
函式
累積緩衝區是擴展範圍的色彩緩衝區。影像不會渲染到其中。相反地,渲染到其中一個色彩緩衝區的影像會在渲染後加入累積緩衝區的內容。透過累積使用不同轉換矩陣產生的影像,可以建立諸如反鋸齒(點、線和多邊形)、動態模糊和景深等效果。
gl:activeShaderProgram/2
將 Program
所命名的已連結程式設定為程式管線物件 Pipeline
的作用中程式。當沒有透過呼叫 gl:useProgram/1
將任何程式設為當前程式時,作用中程式管線物件中的作用中程式是呼叫 gl:uniform()
的目標。
-spec activeTexture(Texture :: enum()) -> ok.
gl:activeTexture/1
選擇後續紋理狀態呼叫會影響哪個紋理單元。實作支援的紋理單元數量取決於實作,但必須至少為 80。
alpha 測試會根據傳入片段的 alpha 值和常數參考值之間的比較結果,捨棄片段。gl:alphaFunc/2
指定參考值和比較函式。只有在啟用 alpha 測試時才會執行比較。預設情況下,它不會啟用。(請參閱 gl:enable/1
和 gl:disable/1
的 ?GL_ALPHA_TEST
。)
-spec areTexturesResident(Textures :: [i()]) -> {0 | 1, Residences :: [0 | 1]}.
GL 會建立一組「工作集」的紋理,這些紋理駐留在紋理記憶體中。這些紋理可以比未駐留的紋理更有效率地繫結到紋理目標。
-spec arrayElement(I :: i()) -> ok.
gl:arrayElement/1
命令在 gl:'begin'/1
/gl:'end'/0
配對內使用,以指定點、線和多邊形圖元的頂點和屬性資料。如果呼叫 gl:arrayElement/1
時啟用 ?GL_VERTEX_ARRAY
,則會繪製單一頂點,並使用從已啟用陣列的 I
位置取得的頂點和屬性資料。如果未啟用 ?GL_VERTEX_ARRAY
,則不會發生繪圖,但會修改與已啟用陣列對應的屬性。
為了建立完整的著色器程式,必須有一種方法可以指定將連結在一起的項目清單。程式物件提供此機制。要連結到程式物件中的著色器必須先附加到該程式物件。gl:attachShader/2
將 Shader
所指定的著色器物件附加到 Program
所指定的程式物件。這表示 Shader
將包含在將在 Program
上執行的連結作業中。
-spec 'begin'(Mode :: enum()) -> ok.
等同於 '\'end\''/0
。
等同於 endQuery/1
。
等同於 endQueryIndexed/2
。
-spec beginTransformFeedback(PrimitiveMode :: enum()) -> ok.
gl:bindAttribLocation/3
用於將 Program
所指定的程式物件中使用者定義的屬性變數與一般頂點屬性索引建立關聯。使用者定義的屬性變數名稱以 null 終止字串的形式傳遞在 Name
中。要繫結到此變數的一般頂點屬性索引由 Index
指定。當 Program
成為目前狀態的一部分時,透過一般頂點屬性 Index
提供的值將修改 Name
所指定的使用者定義屬性變數的值。
gl:bindBuffer/2
將緩衝區物件繫結到指定的緩衝區繫結點。呼叫 gl:bindBuffer/2
,並將 Target
設定為其中一個接受的符號常數,並將 Buffer
設定為緩衝區物件的名稱,會將該緩衝區物件名稱繫結到目標。如果沒有名稱為 Buffer
的緩衝區物件存在,則會建立一個具有該名稱的物件。當緩衝區物件繫結到目標時,該目標的先前繫結會自動中斷。
gl:bindBufferBase/3
將緩衝區物件 Buffer
繫結到 Target
所指定目標陣列中索引 Index
的繫結點。每個 Target
代表緩衝區繫結點的索引陣列,以及一個單一一般繫結點,其他緩衝區操作函式(例如 gl:bindBuffer/2
或 glMapBuffer
)可以使用此繫結點。除了將 Buffer
繫結到索引緩衝區繫結目標之外,gl:bindBufferBase/3
也會將 Buffer
繫結到 Target
所指定的一般緩衝區繫結點。
-spec bindBufferRange(Target :: enum(), Index :: i(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
gl:bindBufferRange/5
將以 Offset
和 Size
表示的緩衝區物件 Buffer
的範圍繫結到 Target
所指定目標陣列中索引 Index
的繫結點。每個 Target
代表緩衝區繫結點的索引陣列,以及一個單一一般繫結點,其他緩衝區操作函式(例如 gl:bindBuffer/2
或 glMapBuffer
)可以使用此繫結點。除了將 Buffer
的範圍繫結到索引緩衝區繫結目標之外,gl:bindBufferRange/5
也會將該範圍繫結到 Target
所指定的一般緩衝區繫結點。
gl:bindBuffersBase/3
將一組 Count
緩衝區物件(其名稱在陣列 Buffers
中給定)繫結到從 Target
所指定目標陣列中索引 First
開始的 Count
個連續繫結點。如果 Buffers
為 ?NULL
,則 gl:bindBuffersBase/3
會取消繫結目前繫結到所參考繫結點的任何緩衝區。假設沒有產生錯誤,它等同於以下虛擬程式碼,它會呼叫 gl:bindBufferBase/3
,但 gl:bindBuffersBase/3
不會變更非索引 Target
除外
-spec bindBuffersRange(Target :: enum(), First :: i(), Buffers :: [i()], Offsets :: [i()], Sizes :: [i()]) -> ok.
gl:bindBuffersRange/5
將一組 Count
範圍從緩衝區物件(其名稱在陣列 Buffers
中給定)繫結到從 Target
所指定目標陣列中索引 First
開始的 Count
個連續繫結點。Offsets
指定包含緩衝區中 Count
個起始偏移的陣列位址,而 Sizes
指定包含範圍 Count
個大小的陣列位址。如果 Buffers
為 ?NULL
,則會忽略 Offsets
和 Sizes
,且 gl:bindBuffersRange/5
會取消繫結目前繫結到所參考繫結點的任何緩衝區。假設沒有產生錯誤,它等同於以下虛擬程式碼,它會呼叫 gl:bindBufferRange/5
,但 gl:bindBuffersRange/5
不會變更非索引 Target
除外
gl:bindFragDataLocation/3
明確指定將使用者定義的變動輸出變數 Name
繫結到程式 Program
的片段著色器色彩編號 ColorNumber
。如果 Name
先前已繫結,則其指定的繫結會取代為 ColorNumber
。Name
必須是以 null 終止的字串。ColorNumber
必須小於 ?GL_MAX_DRAW_BUFFERS
。
-spec bindFragDataLocationIndexed(Program :: i(), ColorNumber :: i(), Index :: i(), Name :: string()) -> ok.
gl:bindFragDataLocationIndexed/4
指定在下次連結程式時,Program
中的變動輸出變數 Name
應繫結到片段色彩 ColorNumber
。Index
可以是零或一,分別指定該色彩用作混合方程式的第一個或第二個色彩輸入。
gl:bindFramebuffer/2
將名稱為 Framebuffer
的畫面緩衝區物件繫結到 Target
所指定的畫面緩衝區目標。Target
必須是 ?GL_DRAW_FRAMEBUFFER
、?GL_READ_FRAMEBUFFER
或 ?GL_FRAMEBUFFER
。如果畫面緩衝區物件繫結到 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
,它會分別成為渲染或讀回操作的目標,直到刪除它或將另一個畫面緩衝區繫結到對應的繫結點。使用設定為 ?GL_FRAMEBUFFER
的 Target
呼叫 gl:bindFramebuffer/2
會將 Framebuffer
繫結到讀取和繪製畫面緩衝區目標。Framebuffer
是先前從呼叫 gl:genFramebuffers/1
傳回的畫面緩衝區物件名稱,或是零以中斷現有的畫面緩衝區物件與 Target
的繫結。
-spec bindImageTexture(Unit, Texture, Level, Layered, Layer, Access, Format) -> ok when Unit :: i(), Texture :: i(), Level :: i(), Layered :: 0 | 1, Layer :: i(), Access :: enum(), Format :: enum().
gl:bindImageTexture/7
將紋理的單一層級綁定到影像單元,以便從著色器讀取和寫入。 Unit
指定要綁定紋理層級的影像單元的從零開始的索引。Texture
指定要綁定到影像單元的現有紋理物件的名稱。如果 Texture
為零,則會中斷任何現有對影像單元的綁定。Level
指定要綁定到影像單元的紋理層級。
gl:bindImageTextures/2
將現有紋理物件的陣列中的影像綁定到指定數量的連續影像單元。Count
指定陣列 Textures
中儲存的紋理物件名稱的數量。該數量的紋理名稱會從陣列中讀取,並綁定到從 First
開始的 Count
個連續紋理單元。如果名稱零出現在 Textures
陣列中,則會重設對影像單元的任何現有綁定。 Textures
中的任何非零項目都必須是現有紋理物件的名稱。當 Textures
中存在非零項目時,會綁定零層級的影像,該綁定會被視為分層的,第一層設定為零,並且該影像會被綁定以進行讀寫存取。影像單元格式參數取自紋理物件零層級影像的內部格式。對於立方體貼圖紋理,會使用零層級正 X 影像的內部格式。如果 Textures
為 ?NULL
,則相當於指定了一個僅包含零的適當大小的陣列。
-spec bindProgramPipeline(Pipeline :: i()) -> ok.
gl:bindProgramPipeline/1
將程式管線物件綁定到目前的內容。Pipeline
必須是先前從呼叫 gl:genProgramPipelines/1
返回的名稱。如果沒有名稱為 Pipeline
的程式管線存在,則會建立一個具有該名稱的新管線物件,並初始化為預設狀態向量。
gl:bindRenderbuffer/2
將名稱為 Renderbuffer
的渲染緩衝區物件綁定到 Target
指定的渲染緩衝區目標。Target
必須為 ?GL_RENDERBUFFER
。Renderbuffer
是先前從呼叫 gl:genRenderbuffers/1
返回的渲染緩衝區物件的名稱,或零以中斷現有的渲染緩衝區物件與 Target
的綁定。
gl:bindSampler/2
將 Sampler
綁定到索引為 Unit
的紋理單元。Sampler
必須為零,或是先前從呼叫 gl:genSamplers/1
返回的取樣器物件的名稱。Unit
必須小於 ?GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
的值。
gl:bindSamplers/2
將現有取樣器物件陣列中的取樣器綁定到指定數量的連續取樣器單元。Count
指定陣列 Samplers
中儲存的取樣器物件名稱的數量。該數量的取樣器名稱會從陣列中讀取,並綁定到從 First
開始的 Count
個連續取樣器單元。
gl:bindTexture/2
可讓您建立或使用已命名的紋理。呼叫 gl:bindTexture/2
時,將 Target
設定為 ?GL_TEXTURE_1D
、 ?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_BUFFER
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
,並將 Texture
設定為新紋理的名稱,會將紋理名稱綁定到目標。當紋理綁定到目標時,該目標的先前綁定會自動中斷。
gl:bindTextures/2
將現有紋理物件的陣列綁定到指定數量的連續紋理單元。Count
指定陣列 Textures
中儲存的紋理物件名稱的數量。該數量的紋理名稱會從陣列中讀取,並綁定到從 First
開始的 Count
個連續紋理單元。紋理的目標或類型是從紋理物件推斷出來的,並且每個紋理都會綁定到紋理單元的對應目標。如果名稱零出現在 Textures
陣列中,則會重設對紋理單元任何目標的任何現有綁定,並且會將該目標的預設紋理綁定到位。 Textures
中的任何非零項目都必須是現有紋理物件的名稱。如果 Textures
為 ?NULL
,則相當於指定了一個僅包含零的適當大小的陣列。
gl:bindTextureUnit/2
將現有紋理物件綁定到編號為 Unit
的紋理單元。
gl:bindTransformFeedback/2
將名稱為 Id
的轉換回饋物件綁定到目前的 GL 狀態。Id
必須是先前從呼叫 gl:genTransformFeedbacks/1
返回的名稱。如果 Id
先前未被綁定,則會建立一個名稱為 Id
且以預設轉換狀態向量初始化的新轉換回饋物件。
-spec bindVertexArray(Array :: i()) -> ok.
gl:bindVertexArray/1
綁定名稱為 Array
的頂點陣列物件。Array
是先前從呼叫 gl:genVertexArrays/1
返回的頂點陣列物件的名稱,或零以中斷現有的頂點陣列物件綁定。
-spec bitmap(Width, Height, Xorig, Yorig, Xmove, Ymove, Bitmap) -> ok when Width :: i(), Height :: i(), Xorig :: f(), Yorig :: f(), Xmove :: f(), Ymove :: f(), Bitmap :: offset() | mem().
點陣圖是二進位影像。繪製時,點陣圖會相對於目前的點陣位置定位,並且使用目前的點陣顏色或索引寫入與點陣圖中的 1 對應的畫面緩衝區像素。與點陣圖中的 0 對應的畫面緩衝區像素不會被修改。
?GL_BLEND_COLOR
可用於計算來源和目標混合因子。顏色成分在儲存之前會被限制在 [0 1] 範圍內。請參閱 gl:blendFunc/2
以取得混合操作的完整說明。最初,?GL_BLEND_COLOR
會設定為 (0, 0, 0, 0)。
-spec blendEquation(Mode :: enum()) -> ok.
等同於 blendEquationi/2
。
混合方程式決定如何將新像素(「來源」顏色)與畫面緩衝區中已有的像素(「目標」顏色)結合。此函數將 RGB 混合方程式和 Alpha 混合方程式都設定為單一方程式。 gl:blendEquationi/2
為單一繪圖緩衝區指定混合方程式,而 gl:blendEquation/1
設定所有繪圖緩衝區的混合方程式。
混合方程式決定如何將新像素(「來源」顏色)與畫面緩衝區中已有的像素(「目標」顏色)結合。這些函數為 RGB 顏色成分指定一個混合方程式,並為 Alpha 成分指定一個混合方程式。 gl:blendEquationSeparatei/3
為單一繪圖緩衝區指定混合方程式,而 gl:blendEquationSeparate/2
設定所有繪圖緩衝區的混合方程式。
等同於 blendFunci/3
。
可以使用將傳入(來源)RGBA 值與畫面緩衝區中已有的 RGBA 值(目標值)混合的函數來繪製像素。混合最初是停用的。使用 gl:enable/1
和 gl:disable/1
並使用參數 ?GL_BLEND
來啟用和停用混合。
-spec blendFuncSeparate(SfactorRGB, DfactorRGB, SfactorAlpha, DfactorAlpha) -> ok when SfactorRGB :: enum(), DfactorRGB :: enum(), SfactorAlpha :: enum(), DfactorAlpha :: enum().
等同於 blendFuncSeparatei/5
。
-spec blendFuncSeparatei(Buf :: i(), SrcRGB :: enum(), DstRGB :: enum(), SrcAlpha :: enum(), DstAlpha :: enum()) -> ok.
可以使用將傳入(來源)RGBA 值與畫面緩衝區中已有的 RGBA 值(目標值)混合的函數來繪製像素。混合最初是停用的。使用 gl:enable/1
和 gl:disable/1
並使用參數 ?GL_BLEND
來啟用和停用混合。
-spec blitFramebuffer(SrcX0, SrcY0, SrcX1, SrcY1, DstX0, DstY0, DstX1, DstY1, Mask, Filter) -> ok when SrcX0 :: i(), SrcY0 :: i(), SrcX1 :: i(), SrcY1 :: i(), DstX0 :: i(), DstY0 :: i(), DstX1 :: i(), DstY1 :: i(), Mask :: i(), Filter :: enum().
gl:blitFramebuffer/10
和 glBlitNamedFramebuffer
將像素值矩形從讀取畫面緩衝區的一個區域傳輸到繪圖畫面緩衝區的另一個區域。
gl:bufferData/4
和 glNamedBufferData
會為緩衝區物件建立新的資料儲存區。在 gl:bufferData/4
的情況下,會使用目前綁定到 Target
的緩衝區物件。對於 glNamedBufferData
,將會改為使用呼叫者在 Buffer
中指定的 ID 相關聯的緩衝區物件。
gl:bufferStorage/4
和 glNamedBufferStorage
會建立新的不可變資料儲存區。對於 gl:bufferStorage/4
,將會初始化目前綁定到 Target
的緩衝區物件。對於 glNamedBufferStorage
,Buffer
是將要設定的緩衝區物件的名稱。資料儲存區的大小由 Size
指定。如果初始資料可用,則可以在 Data
中提供其位址。否則,要建立未初始化的資料儲存區,Data
應該為 ?NULL
。
gl:bufferSubData/4
和 glNamedBufferSubData
會重新定義指定緩衝區物件的部分或全部資料儲存區。從位元組偏移量 Offset
開始並延伸 Size
個位元組的資料會從 Data
所指向的記憶體複製到資料儲存區。Offset
和 Size
必須定義完全位於緩衝區物件的資料儲存區內的範圍。
-spec callList(List :: i()) -> ok.
gl:callList/1
會執行指定的顯示列表。儲存在顯示列表中的指令會依序執行,如同它們是在沒有使用顯示列表的情況下被呼叫一樣。如果 List
尚未被定義為顯示列表,則 gl:callList/1
會被忽略。
-spec callLists(Lists :: [i()]) -> ok.
gl:callLists/1
會執行作為 Lists
傳遞的名稱列表中每個顯示列表。因此,儲存在每個顯示列表中的指令會依序執行,如同它們是在沒有使用顯示列表的情況下被呼叫一樣。尚未被定義的顯示列表名稱會被忽略。
gl:checkFramebufferStatus/1
和 glCheckNamedFramebufferStatus
會傳回當作讀取或繪製幀緩衝區處理時,幀緩衝區物件的完整性狀態,具體取決於 Target
的值。
gl:clampColor/2
控制在 gl:readPixels/7
期間執行的顏色鉗制。Target
必須是 ?GL_CLAMP_READ_COLOR
。如果 Clamp
是 ?GL_TRUE
,則啟用讀取顏色鉗制;如果 Clamp
是 ?GL_FALSE
,則停用讀取顏色鉗制。如果 Clamp
是 ?GL_FIXED_ONLY
,則只有當選取的讀取緩衝區具有定點元件時才啟用讀取顏色鉗制,否則會停用。
-spec clear(Mask :: i()) -> ok.
gl:clear/1
將視窗的位元平面區域設定為先前由 gl:clearColor/4
、gl:clearDepth/1
和 gl:clearStencil/1
選取的值。可以使用 gl:drawBuffer/1
一次選取多個緩衝區來同時清除多個顏色緩衝區。
gl:clearAccum/4
指定 gl:clear/1
用於清除累積緩衝區的紅色、綠色、藍色和 alpha 值。
-spec clearBufferData(Target, Internalformat, Format, Type, Data) -> ok when Target :: enum(), Internalformat :: enum(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
等同於 clearBufferuiv/3
。
等同於 clearBufferuiv/3
。
等同於 clearBufferuiv/3
。
等同於 clearBufferuiv/3
。
-spec clearBufferSubData(Target, Internalformat, Offset, Size, Format, Type, Data) -> ok when Target :: enum(), Internalformat :: enum(), Offset :: i(), Size :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
等同於 clearBufferuiv/3
。
這些指令會將幀緩衝區的指定緩衝區清除為指定的值。對於 gl:clearBuffer*()
,幀緩衝區是目前綁定的繪製幀緩衝區物件。對於 glClearNamedFramebuffer*
,Framebuffer
為零,表示預設繪製幀緩衝區,或是幀緩衝區物件的名稱。
gl:clearColor/4
指定 gl:clear/1
用於清除顏色緩衝區的紅色、綠色、藍色和 alpha 值。gl:clearColor/4
指定的值會被鉗制在 [0 1] 範圍內。
-spec clearDepth(Depth :: clamp()) -> ok.
等同於 clearDepthf/1
。
-spec clearDepthf(D :: f()) -> ok.
gl:clearDepth/1
指定 gl:clear/1
用於清除深度緩衝區的深度值。gl:clearDepth/1
指定的值會被鉗制在 [0 1] 範圍內。
-spec clearIndex(C :: f()) -> ok.
gl:clearIndex/1
指定 gl:clear/1
用於清除顏色索引緩衝區的索引。C
不會被鉗制。相反地,C
會被轉換為二進位點右側具有未指定精度的定點值。然後,此值的整數部分會與 2 m-1 進行遮罩,其中 m 是儲存在幀緩衝區中顏色索引的位元數。
-spec clearStencil(S :: i()) -> ok.
gl:clearStencil/1
指定 gl:clear/1
用於清除模板緩衝區的索引。S
會與 2 m-1 進行遮罩,其中 m 是模板緩衝區中的位元數。
-spec clearTexImage(Texture :: i(), Level :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem()) -> ok.
gl:clearTexImage/5
使用應用程式提供的值填滿紋理中包含的所有圖像。Texture
必須是現有紋理的名稱。此外,Texture
不可以是緩衝區紋理的名稱,也不能是壓縮的內部格式。
-spec clearTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
gl:clearTexSubImage/11
使用應用程式提供的值填滿紋理中包含的所有或部分圖像。Texture
必須是現有紋理的名稱。此外,Texture
不可以是緩衝區紋理的名稱,也不能是壓縮的內部格式。
-spec clientActiveTexture(Texture :: enum()) -> ok.
gl:clientActiveTexture/1
選取要由 gl:texCoordPointer/4
修改的頂點陣列客戶端狀態參數,並分別使用 gl:enableClientState/1
或 gl:disableClientState/1
啟用或停用,當呼叫的參數為 ?GL_TEXTURE_COORD_ARRAY
時。
gl:clientWaitSync/3
會導致客戶端阻塞並等待由 Sync
指定的同步物件發出訊號。如果 gl:clientWaitSync/3
被呼叫時 Sync
已發出訊號,gl:clientWaitSync/3
會立即返回,否則它會阻塞並等待最多 Timeout
奈秒,直到 Sync
發出訊號。
gl:clipControl/2
控制裁剪體積的行為以及裁剪座標到視窗座標的轉換行為。
幾何圖形始終會根據 x
、y
和 z
中的六平面截頭錐體邊界進行裁剪。gl:clipPlane/2
允許指定額外的平面,這些平面不一定垂直於 x
、y
或 z
軸,所有幾何圖形都會根據這些平面進行裁剪。若要判斷額外裁剪平面的最大數量,請使用參數 ?GL_MAX_CLIP_PLANES
呼叫 gl:getIntegerv/1
。所有實作都支援至少六個此類裁剪平面。由於產生的裁剪區域是已定義半空間的交集,因此它始終是凸的。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
等同於 color4usv/1
。
GL 儲存目前單值顏色索引和目前四值 RGBA 顏色。gl:color()
設定新的四值 RGBA 顏色。gl:color()
有兩種主要變體:gl:color3()
和 gl:color4()
。gl:color3()
變體會明確指定新的紅色、綠色和藍色值,並隱含地將目前的 alpha 值設定為 1.0 (全強度)。gl:color4()
變體會明確指定所有四種顏色成分。
-spec colorMask(Red :: 0 | 1, Green :: 0 | 1, Blue :: 0 | 1, Alpha :: 0 | 1) -> ok.
等同於 colorMaski/5
。
-spec colorMaski(Index :: i(), R :: 0 | 1, G :: 0 | 1, B :: 0 | 1, A :: 0 | 1) -> ok.
gl:colorMask/4
和 gl:colorMaski/5
指定是否可以或不能寫入幀緩衝區中的個別顏色成分。gl:colorMaski/5
設定特定繪製緩衝區的遮罩,而 gl:colorMask/4
設定所有繪製緩衝區的遮罩。例如,如果 Red
是 ?GL_FALSE
,則無論嘗試進行哪種繪圖操作,都不會變更任何顏色緩衝區中任何像素的紅色成分。
gl:colorMaterial/2
指定哪些材質參數會追蹤目前的顏色。當 ?GL_COLOR_MATERIAL
啟用時,由 Mode
指定的材質參數,或由 Face
指定的材質參數會隨時追蹤目前的顏色。
gl:colorPointer/4
指定在渲染時要使用的顏色成分陣列的位置和資料格式。Size
指定每個顏色的成分數,且必須為 3 或 4。Type
指定每個顏色成分的資料類型,而 Stride
指定從一個顏色到下一個顏色的位元組步幅,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。(單陣列儲存可能在某些實作上更有效率;請參閱 gl:interleavedArrays/3
。)
-spec colorSubTable(Target, Start, Count, Format, Type, Data) -> ok when Target :: enum(), Start :: i(), Count :: i(), Format :: enum(), Type :: enum(), Data :: offset() | mem().
gl:colorSubTable/6
用於重新指定先前使用 gl:colorTable/6
定義的顏色表之連續部分。Data
所參照的像素會取代現有表格中從索引 Start
到 start+count-1(含)的部分。此區域不得包含原始指定顏色表範圍外的任何條目。指定寬度為 0 的子紋理並非錯誤,但此類指定沒有效果。
-spec colorTable(Target, Internalformat, Width, Format, Type, Table) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Format :: enum(), Type :: enum(), Table :: offset() | mem().
gl:colorTable/6
可用於兩種情況:測試在給定特定參數下,查找表實際的大小和顏色解析度,或是載入顏色查找表的內容。使用 ?GL_PROXY_*
目標用於第一種情況,其他目標則用於第二種情況。
-spec colorTableParameteriv(Target :: enum(), Pname :: enum(), Params :: {i(), i(), i(), i()}) -> ok.
gl:colorTableParameter()
用於指定當顏色分量載入到顏色表時應用的縮放因子和偏差項。Target
表示縮放和偏差項所應用的顏色表;它必須設定為 ?GL_COLOR_TABLE
、?GL_POST_CONVOLUTION_COLOR_TABLE
或 ?GL_POST_COLOR_MATRIX_COLOR_TABLE
。
-spec compileShader(Shader :: i()) -> ok.
gl:compileShader/1
編譯儲存在由 Shader
指定的著色器物件中的原始碼字串。
-spec compressedTexImage1D(Target, Level, Internalformat, Width, Border, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), Width :: i(), Border :: i(), ImageSize :: i(), Data :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
compressedTexImage2D(Target, Level, Internalformat, Width, Height, Border, ImageSize, Data)
檢視原始碼-spec compressedTexImage2D(Target, Level, Internalformat, Width, Height, Border, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Border :: i(), ImageSize :: i(), Data :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
compressedTexImage3D(Target, Level, Internalformat, Width, Height, Depth, Border, ImageSize, Data)
檢視原始碼-spec compressedTexImage3D(Target, Level, Internalformat, Width, Height, Depth, Border, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i(), Border :: i(), ImageSize :: i(), Data :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
compressedTexSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data)
檢視原始碼compressedTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data)
檢視原始碼-spec compressedTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
-spec compressedTextureSubImage1D(Texture, Level, Xoffset, Width, Format, ImageSize, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Width :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
compressedTextureSubImage2D(Texture, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data)
檢視原始碼-spec compressedTextureSubImage2D(Texture, Level, Xoffset, Yoffset, Width, Height, Format, ImageSize, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Width :: i(), Height :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
compressedTextureSubImage3D(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data)
檢視原始碼-spec compressedTextureSubImage3D(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, ImageSize, Data) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), ImageSize :: i(), Data :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
-spec convolutionFilter1D(Target, Internalformat, Width, Format, Type, Image) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Format :: enum(), Type :: enum(), Image :: offset() | mem().
gl:convolutionFilter1D/6
從像素陣列建立一維捲積濾波器核心。
-spec convolutionFilter2D(Target, Internalformat, Width, Height, Format, Type, Image) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Image :: offset() | mem().
gl:convolutionFilter2D/7
從像素陣列建立二維捲積濾波器核心。
gl:convolutionParameter()
設定捲積參數的值。
-spec copyBufferSubData(ReadTarget, WriteTarget, ReadOffset, WriteOffset, Size) -> ok when ReadTarget :: enum(), WriteTarget :: enum(), ReadOffset :: i(), WriteOffset :: i(), Size :: i().
gl:copyBufferSubData/5
和 glCopyNamedBufferSubData
將附加到來源緩衝區物件的資料儲存區的一部分複製到附加到目標緩衝區物件的資料儲存區。由 Size
指示的基本機器單元數量從來源的偏移量 ReadOffset
複製到目標的偏移量 WriteOffset
。ReadOffset
、WriteOffset
和 Size
均以基本機器單元表示。
gl:copyColorSubTable/5
用於重新指定先前使用 gl:colorTable/6
定義的顏色表的連續部分。從幀緩衝區複製的像素會取代現有表中索引從 Start
到 start+x-1 (包含) 的部分。此區域不得包含超出顏色表範圍的任何條目,如同最初指定的那樣。指定寬度為 0 的子紋理不是錯誤,但這種指定沒有任何效果。
-spec copyColorTable(Target :: enum(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i()) -> ok.
gl:copyColorTable/5
從目前的 ?GL_READ_BUFFER
(而不是從主記憶體,如同 gl:colorTable/6
的情況) 載入顏色表。
-spec copyConvolutionFilter1D(Target :: enum(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i()) -> ok.
gl:copyConvolutionFilter1D/5
使用來自目前 ?GL_READ_BUFFER
的像素 (而不是從主記憶體,如同 gl:convolutionFilter1D/6
的情況) 定義一維捲積濾波器核心。
-spec copyConvolutionFilter2D(Target :: enum(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i(), Height :: i()) -> ok.
gl:copyConvolutionFilter2D/6
使用來自目前 ?GL_READ_BUFFER
的像素 (而不是從主記憶體,如同 gl:convolutionFilter2D/7
的情況) 定義二維捲積濾波器核心。
copyImageSubData(SrcName, SrcTarget, SrcLevel, SrcX, SrcY, SrcZ, DstName, DstTarget, DstLevel, DstX, DstY, DstZ, SrcWidth, SrcHeight, SrcDepth)
檢視原始碼-spec copyImageSubData(SrcName, SrcTarget, SrcLevel, SrcX, SrcY, SrcZ, DstName, DstTarget, DstLevel, DstX, DstY, DstZ, SrcWidth, SrcHeight, SrcDepth) -> ok when SrcName :: i(), SrcTarget :: enum(), SrcLevel :: i(), SrcX :: i(), SrcY :: i(), SrcZ :: i(), DstName :: i(), DstTarget :: enum(), DstLevel :: i(), DstX :: i(), DstY :: i(), DstZ :: i(), SrcWidth :: i(), SrcHeight :: i(), SrcDepth :: i().
gl:copyImageSubData/15
可用於將資料從一個影像 (即紋理或渲染緩衝區) 複製到另一個影像。gl:copyImageSubData/15
不執行通用轉換,例如縮放、調整大小、混合、色彩空間或格式轉換。它應被視為以類似於 CPU memcpy 的方式運作。如果格式相容,CopyImageSubData 可以在具有不同內部格式的影像之間複製。
gl:copyPixels/5
將螢幕對齊的像素矩形從指定的幀緩衝區位置複製到相對於目前光柵位置的區域。只有當整個像素來源區域都在視窗的暴露部分內時,其操作才是明確定義的。從視窗外部或從視窗中未暴露的區域複製的結果取決於硬體且未定義。
-spec copyTexImage1D(Target, Level, Internalformat, X, Y, Width, Border) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i(), Border :: i().
gl:copyTexImage1D/7
使用來自目前的 ?GL_READ_BUFFER
的像素定義一維紋理影像。
-spec copyTexImage2D(Target, Level, Internalformat, X, Y, Width, Height, Border) -> ok when Target :: enum(), Level :: i(), Internalformat :: enum(), X :: i(), Y :: i(), Width :: i(), Height :: i(), Border :: i().
gl:copyTexImage2D/8
使用來自目前的 ?GL_READ_BUFFER
的像素定義二維紋理影像或立方體貼圖紋理影像。
-spec copyTexSubImage1D(Target :: enum(), Level :: i(), Xoffset :: i(), X :: i(), Y :: i(), Width :: i()) -> ok.
gl:copyTexSubImage1D/6
和 glCopyTextureSubImage1D
使用來自目前的 ?GL_READ_BUFFER
的像素取代一維紋理影像的一部分 (而不是從主記憶體,如同 gl:texSubImage1D/7
的情況)。對於 gl:copyTexSubImage1D/6
,繫結到 Target
的紋理物件將用於此流程。對於 glCopyTextureSubImage1D
,Texture
會指出應將哪個紋理物件用於呼叫的目的。
-spec copyTexSubImage2D(Target, Level, Xoffset, Yoffset, X, Y, Width, Height) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), X :: i(), Y :: i(), Width :: i(), Height :: i().
gl:copyTexSubImage2D/8
和 glCopyTextureSubImage2D
使用來自目前的 ?GL_READ_BUFFER
的像素取代二維紋理影像、立方體貼圖紋理影像、矩形影像的矩形部分,或一維陣列紋理的多個切片的線性部分 (而不是從主記憶體,如同 gl:texSubImage2D/9
的情況)。
-spec copyTexSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, X, Y, Width, Height) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), X :: i(), Y :: i(), Width :: i(), Height :: i().
gl:copyTexSubImage3D/9
和 glCopyTextureSubImage3D
函式使用來自目前的 ?GL_READ_BUFFER
的像素取代三維或二維陣列紋理影像的矩形部分 (而不是從主記憶體,如同 gl:texSubImage3D/11
的情況)。
gl:createBuffers/1
在 Buffers
中傳回 N
個先前未使用的緩衝區名稱,每個名稱都代表一個新的緩衝區物件,如同繫結到未指定的目標一樣初始化。
gl:createFramebuffers/1
在 Framebuffers
中傳回 N
個先前未使用的幀緩衝區名稱,每個名稱都代表一個初始化為預設狀態的新幀緩衝區物件。
-spec createProgram() -> i().
gl:createProgram/0
建立一個空的程式物件,並傳回可用於參考它的非零值。程式物件是一個可以附加著色器物件的物件。這提供了一種機制來指定將連結以建立程式的著色器物件。它還提供了一種方法來檢查將用於建立程式的著色器之間的相容性 (例如,檢查頂點著色器和片段著色器之間的相容性)。當不再需要作為程式物件的一部分時,可以分離著色器物件。
gl:createProgramPipelines/1
在 Pipelines
中傳回 N
個先前未使用的程式管線名稱,每個名稱都代表一個初始化為預設狀態的新程式管線物件。
gl:createQueries/2
在 Ids
中傳回 N
個先前未使用的查詢物件名稱,每個名稱都代表一個具有指定 Target
的新查詢物件。
gl:createRenderbuffers/1
在 Renderbuffers
中傳回 N
個先前未使用的渲染緩衝區物件名稱,每個名稱都代表一個初始化為預設狀態的新渲染緩衝區物件。
gl:createSamplers/1
在 Samplers
中傳回 N
個先前未使用的取樣器名稱,每個名稱都代表一個初始化為預設狀態的新取樣器物件。
gl:createShader/1
建立一個空的著色器物件,並傳回可用於參考它的非零值。著色器物件用於維護定義著色器的原始碼字串。ShaderType
表示要建立的著色器類型。支援五種著色器類型。類型為 ?GL_COMPUTE_SHADER
的著色器是預期在可程式化運算處理器上執行的著色器。類型為 ?GL_VERTEX_SHADER
的著色器是預期在可程式化頂點處理器上執行的著色器。類型為 ?GL_TESS_CONTROL_SHADER
的著色器是預期在控制階段的可程式化細分處理器上執行的著色器。類型為 ?GL_TESS_EVALUATION_SHADER
的著色器是預期在評估階段的可程式化細分處理器上執行的著色器。類型為 ?GL_GEOMETRY_SHADER
的著色器是預期在可程式化幾何處理器上執行的著色器。類型為 ?GL_FRAGMENT_SHADER
的著色器是預期在可程式化片段處理器上執行的著色器。
-spec createShaderProgramv(Type :: enum(), Strings :: [unicode:chardata()]) -> i().
gl:createShaderProgram()
建立一個程式物件,其中包含由 Type
指定的單個階段的已編譯和已連結的著色器。Strings
指的是用於建立著色器可執行檔的 Count
個字串陣列。
gl:createTextures/2
在 Textures
中返回 N
個先前未使用的紋理名稱,每個名稱代表一個新的紋理物件,其維度和類型由 Target
指定,並初始化為該紋理類型的預設值。
gl:createTransformFeedbacks/1
在 Ids
中返回 N
個先前未使用的變換回饋物件名稱,每個名稱代表一個新的變換回饋物件,並初始化為預設狀態。
gl:createVertexArrays/1
在 Arrays
中返回 N
個先前未使用的頂點陣列物件名稱,每個名稱代表一個新的頂點陣列物件,並初始化為預設狀態。
-spec cullFace(Mode :: enum()) -> ok.
gl:cullFace/1
指定當啟用面剔除時,正面或背面(由 mode
指定)是否被剔除。面剔除最初是禁用的。要啟用和禁用面剔除,請使用引數 ?GL_CULL_FACE
呼叫 gl:enable/1
和 gl:disable/1
命令。面包括三角形、四邊形、多邊形和矩形。
-spec debugMessageControl(Source :: enum(), Type :: enum(), Severity :: enum(), Ids :: [i()], Enabled :: 0 | 1) -> ok.
gl:debugMessageControl/5
控制除錯上下文所產生的除錯訊息的報告。參數 Source
、Type
和 Severity
形成一個過濾器,從 GL 產生的潛在訊息池中選擇訊息。
-spec debugMessageInsert(Source :: enum(), Type :: enum(), Id :: i(), Severity :: enum(), Buf :: string()) -> ok.
gl:debugMessageInsert/5
將使用者提供的訊息插入除錯輸出佇列。Source
指定將用於分類訊息的來源,並且必須為 ?GL_DEBUG_SOURCE_APPLICATION
或 ?GL_DEBUG_SOURCE_THIRD_PARTY
。所有其他來源都保留給 GL 實作使用。Type
指示要插入的訊息類型,可以是 ?GL_DEBUG_TYPE_ERROR
、?GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
、?GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
、?GL_DEBUG_TYPE_PORTABILITY
、?GL_DEBUG_TYPE_PERFORMANCE
、?GL_DEBUG_TYPE_MARKER
、?GL_DEBUG_TYPE_PUSH_GROUP
、?GL_DEBUG_TYPE_POP_GROUP
或 ?GL_DEBUG_TYPE_OTHER
。Severity
指示訊息的嚴重性,可以是 ?GL_DEBUG_SEVERITY_LOW
、?GL_DEBUG_SEVERITY_MEDIUM
、?GL_DEBUG_SEVERITY_HIGH
或 ?GL_DEBUG_SEVERITY_NOTIFICATION
。Id
可供應用程式定義使用,並且可以是任何值。此值將被記錄並用於識別訊息。
-spec deleteBuffers(Buffers :: [i()]) -> ok.
gl:deleteBuffers/1
刪除由陣列 Buffers
的元素命名的 N
個緩衝區物件。在刪除緩衝區物件後,它沒有內容,並且其名稱可供重複使用(例如通過 gl:genBuffers/1
)。如果刪除當前綁定的緩衝區物件,則綁定會還原為 0(不存在任何緩衝區物件)。
-spec deleteFramebuffers(Framebuffers :: [i()]) -> ok.
gl:deleteFramebuffers/1
刪除名稱儲存在 Framebuffers
定址的陣列中的 N
個幀緩衝區物件。名稱 0 由 GL 保留,如果它出現在 Framebuffers
中,則會被靜默忽略,其他未使用的名稱也是如此。一旦刪除幀緩衝區物件,其名稱將再次未使用,並且沒有任何附件。如果當前綁定到一個或多個目標 ?GL_DRAW_FRAMEBUFFER
或 ?GL_READ_FRAMEBUFFER
的幀緩衝區被刪除,就好像已使用對應的 Target
和 Framebuffer
零執行了 gl:bindFramebuffer/2
。
gl:deleteLists/2
導致刪除連續的顯示列表組。List
是要刪除的第一個顯示列表的名稱,Range
是要刪除的顯示列表數。所有顯示列表 d 滿足 list<= d<= list+range-1 都會被刪除。
-spec deleteProgram(Program :: i()) -> ok.
gl:deleteProgram/1
釋放內存並使與 Program
指定的程式物件相關聯的名稱失效。此命令有效地撤消了對 gl:createProgram/0
的呼叫效果。
-spec deleteProgramPipelines(Pipelines :: [i()]) -> ok.
gl:deleteProgramPipelines/1
刪除名稱儲存在陣列 Pipelines
中的 N
個程式管線物件。Pipelines
中未使用的名稱將被忽略,名稱 0 也是如此。刪除程式管線物件後,其名稱將再次未使用,並且沒有任何內容。如果刪除當前綁定的程式管線物件,則該物件的綁定會還原為零,並且沒有程式管線物件變為當前。
-spec deleteQueries(Ids :: [i()]) -> ok.
gl:deleteQueries/1
刪除由陣列 Ids
的元素命名的 N
個查詢物件。刪除查詢物件後,它沒有內容,並且其名稱可供重複使用(例如通過 gl:genQueries/1
)。
-spec deleteRenderbuffers(Renderbuffers :: [i()]) -> ok.
gl:deleteRenderbuffers/1
刪除名稱儲存在 Renderbuffers
定址的陣列中的 N
個渲染緩衝區物件。名稱 0 由 GL 保留,如果它出現在 Renderbuffers
中,則會被靜默忽略,其他未使用的名稱也是如此。一旦刪除渲染緩衝區物件,其名稱將再次未使用,並且沒有任何內容。如果刪除當前綁定到目標 ?GL_RENDERBUFFER
的渲染緩衝區,就好像已使用 ?GL_RENDERBUFFER
的 Target
和名稱為 0 的 Name
執行了 gl:bindRenderbuffer/2
。
-spec deleteSamplers(Samplers :: [i()]) -> ok.
gl:deleteSamplers/1
刪除由陣列 Samplers
的元素命名的 N
個取樣器物件。刪除取樣器物件後,其名稱將再次未使用。如果刪除當前綁定到取樣器單元的取樣器物件,就好像呼叫了 gl:bindSampler/2
,其中單元設定為取樣器綁定的單元,取樣器設定為 0。Samplers
中未使用的名稱將被靜默忽略,保留名稱 0 也是如此。
-spec deleteShader(Shader :: i()) -> ok.
gl:deleteShader/1
釋放內存並使與 Shader
指定的著色器物件相關聯的名稱失效。此命令有效地撤消了對 gl:createShader/1
的呼叫效果。
-spec deleteSync(Sync :: i()) -> ok.
gl:deleteSync/1
刪除由 Sync
指定的同步物件。如果與指定的同步物件對應的柵欄命令已完成,或者如果沒有 gl:waitSync/3
或 gl:clientWaitSync/3
命令在 Sync
上阻塞,則會立即刪除該物件。否則,Sync
會被標記為刪除,並且當它不再與任何柵欄命令相關聯,並且不再阻塞任何 gl:waitSync/3
或 gl:clientWaitSync/3
命令時將被刪除。在任何一種情況下,在 gl:deleteSync/1
返回後,名稱 Sync
無效,並且不能再用於引用同步物件。
-spec deleteTextures(Textures :: [i()]) -> ok.
gl:deleteTextures/1
刪除由陣列 Textures
的元素命名的 N
個紋理。刪除紋理後,它沒有內容或維度,並且其名稱可供重複使用(例如通過 gl:genTextures/1
)。如果刪除當前綁定的紋理,則綁定會還原為 0(預設紋理)。
-spec deleteTransformFeedbacks(Ids :: [i()]) -> ok.
gl:deleteTransformFeedbacks/1
刪除名稱儲存在陣列 Ids
中的 N
個變換回饋物件。Ids
中未使用的名稱將被忽略,名稱 0 也是如此。刪除變換回饋物件後,其名稱將再次未使用,並且沒有任何內容。如果刪除活動的變換回饋物件,則其名稱會立即變為未使用,但基礎物件不會被刪除,直到它不再活動。
-spec deleteVertexArrays(Arrays :: [i()]) -> ok.
gl:deleteVertexArrays/1
刪除名稱儲存在 Arrays
定址的陣列中的 N
個頂點陣列物件。一旦刪除頂點陣列物件,它就沒有內容,並且其名稱再次未使用。如果刪除當前綁定的頂點陣列物件,則該物件的綁定會還原為零,並且預設頂點陣列變為當前。 Arrays
中未使用的名稱將被靜默忽略,值 0 也是如此。
-spec depthFunc(Func :: enum()) -> ok.
gl:depthFunc/1
指定用於比較每個傳入像素深度值與深度緩衝區中存在的深度值的函數。只有在啟用深度測試時才會執行比較。(請參閱 gl:enable/1
和 gl:disable/1
的 ?GL_DEPTH_TEST
。)
-spec depthMask(Flag :: 0 | 1) -> ok.
gl:depthMask/1
指定是否啟用深度緩衝區寫入。如果 Flag
為 ?GL_FALSE
,則禁用深度緩衝區寫入。否則,將啟用。最初,深度緩衝區寫入是啟用的。
等效於 depthRangef/2
。
在裁剪並除以 w
之後,深度座標的範圍會從 -1 到 1,分別對應到近裁剪面和遠裁剪面。每個視埠都有一個獨立的深度範圍,指定為此範圍內標準化深度座標到視窗深度座標的線性映射。無論實際的深度緩衝區實作方式為何,視窗座標深度值都被視為範圍從 0 到 1(如顏色分量)。gl:depthRangeArray()
指定此範圍中標準化深度座標到視窗深度座標的線性映射,適用於範圍 [First
, First
+ Count
) 內的每個視埠。因此,gl:depthRangeArray()
接受的值在接受之前都會被鉗制到此範圍內。
在裁剪並除以 w
之後,深度座標的範圍會從 -1 到 1,分別對應到近裁剪面和遠裁剪面。gl:depthRange/2
指定此範圍中標準化深度座標到視窗深度座標的線性映射。無論實際的深度緩衝區實作方式為何,視窗座標深度值都被視為範圍從 0 到 1(如顏色分量)。因此,gl:depthRange/2
接受的值在接受之前都會被鉗制到此範圍內。
在裁剪並除以 w
之後,深度座標的範圍會從 -1 到 1,分別對應到近裁剪面和遠裁剪面。每個視埠都有一個獨立的深度範圍,指定為此範圍內標準化深度座標到視窗深度座標的線性映射。無論實際的深度緩衝區實作方式為何,視窗座標深度值都被視為範圍從 0 到 1(如顏色分量)。gl:depthRangeIndexed/3
指定此範圍中標準化深度座標到視窗深度座標的線性映射,適用於指定的視埠。因此,gl:depthRangeIndexed/3
接受的值在接受之前都會被鉗制到此範圍內。
gl:detachShader/2
將 Shader
指定的著色器物件從 Program
指定的程式物件分離。此命令可用於還原命令 gl:attachShader/2
的效果。
-spec disable(Cap :: enum()) -> ok.
等同於 enablei/2
。
-spec disableClientState(Cap :: enum()) -> ok.
等同於 enableClientState/1
。
等同於 enablei/2
。
-spec disableVertexAttribArray(Index :: i()) -> ok.
gl:dispatchCompute/3
啟動一個或多個計算工作群組。每個工作群組都由計算著色器階段的活動程式物件處理。雖然工作群組內的個別著色器調用會作為一個單位執行,但工作群組會完全獨立且以未指定的順序執行。Num_groups_x
、Num_groups_y
和 Num_groups_z
分別指定將在 X、Y 和 Z 維度中調度的本機工作群組數量。
-spec dispatchComputeIndirect(Indirect :: i()) -> ok.
gl:dispatchComputeIndirect/1
使用目前繫結到 ?GL_DISPATCH_INDIRECT_BUFFER
目標的緩衝區物件中儲存的參數,啟動一個或多個計算工作群組。每個工作群組都由計算著色器階段的活動程式物件處理。雖然工作群組內的個別著色器調用會作為一個單位執行,但工作群組會完全獨立且以未指定的順序執行。Indirect
包含緩衝區物件的資料儲存區中的偏移量,該物件繫結到 ?GL_DISPATCH_INDIRECT_BUFFER
目標,參數儲存在該處。
gl:drawArrays/3
使用極少量的子常式呼叫來指定多個幾何圖元。您可以使用預先指定的頂點、法線和顏色陣列,而不是呼叫 GL 程序來傳遞每個個別的頂點、法線、紋理座標、邊緣旗標或顏色,並使用它們以單次呼叫 gl:drawArrays/3
來建構一系列圖元。
gl:drawArraysIndirect/2
使用極少量的子常式呼叫來指定多個幾何圖元。gl:drawArraysIndirect/2
的行為與 gl:drawArraysInstancedBaseInstance/5
類似,除了 gl:drawArraysInstancedBaseInstance/5
的參數儲存在 Indirect
給定的位址的記憶體中。
gl:drawArraysInstanced/4
的行為與 gl:drawArrays/3
完全相同,只是執行元素範圍的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
-spec drawArraysInstancedBaseInstance(Mode :: enum(), First :: i(), Count :: i(), Instancecount :: i(), Baseinstance :: i()) -> ok.
gl:drawArraysInstancedBaseInstance/5
的行為與 gl:drawArrays/3
完全相同,只是執行元素範圍的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
-spec drawBuffer(Mode :: enum()) -> ok.
當色彩寫入框架緩衝區時,它們會寫入 gl:drawBuffer/1
指定的色彩緩衝區。下列其中一個值可用於預設框架緩衝區
-spec drawBuffers(Bufs :: [enum()]) -> ok.
gl:drawBuffers/1
和 glNamedFramebufferDrawBuffers
定義一個緩衝區陣列,來自片段著色器資料的輸出將會寫入其中。如果片段著色器將值寫入一個或多個使用者定義的輸出變數,則每個變數的值會寫入 Bufs
內的位置所指定的緩衝區,該位置對應到指派給該使用者定義輸出的位置。用於指派給大於或等於 N
的位置的使用者定義輸出的繪製緩衝區會隱式設定為 ?GL_NONE
,並且寫入此類輸出的任何資料都會被捨棄。
-spec drawElements(Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem()) -> ok.
gl:drawElements/4
使用極少量的子常式呼叫來指定多個幾何圖元。您可以使用預先指定的頂點、法線等等陣列,而不是呼叫 GL 函式來傳遞每個個別的頂點、法線、紋理座標、邊緣旗標或顏色,並使用它們以單次呼叫 gl:drawElements/4
來建構一系列圖元。
-spec drawElementsBaseVertex(Mode, Count, Type, Indices, Basevertex) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Basevertex :: i().
gl:drawElementsBaseVertex/5
的行為與 gl:drawElements/4
完全相同,除了對應的繪製呼叫所傳輸的第 i
個元素將取自每個啟用陣列的元素 Indices
[i] + Basevertex
。如果結果值大於 Type
可表示的最大值,則就好像計算已向上轉換為 32 位元不帶正負號的整數(在溢位條件下環繞)。如果總和為負數,則此運算未定義。
gl:drawElementsIndirect/3
使用極少量的子常式呼叫來指定多個索引幾何圖元。gl:drawElementsIndirect/3
的行為與 gl:drawElementsInstancedBaseVertexBaseInstance/7
類似,除了 gl:drawElementsInstancedBaseVertexBaseInstance/7
的參數儲存在 Indirect
給定的位址的記憶體中。
-spec drawElementsInstanced(Mode, Count, Type, Indices, Instancecount) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i().
gl:drawElementsInstanced/5
的行為與 gl:drawElements/4
完全相同,只是執行元素集合的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
drawElementsInstancedBaseInstance(Mode, Count, Type, Indices, Instancecount, Baseinstance)
檢視原始碼-spec drawElementsInstancedBaseInstance(Mode, Count, Type, Indices, Instancecount, Baseinstance) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i(), Baseinstance :: i().
gl:drawElementsInstancedBaseInstance/6
的行為與 gl:drawElements/4
完全相同,只是執行元素集合的 Instancecount
個執行個體,且內部計數器 InstanceID
的值會在每次迭代時遞增。InstanceID
是一個內部 32 位元整數計數器,可由頂點著色器讀取為 ?gl_InstanceID
。
-spec drawElementsInstancedBaseVertex(Mode, Count, Type, Indices, Instancecount, Basevertex) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i(), Basevertex :: i().
gl:drawElementsInstancedBaseVertex/6
的行為與 gl:drawElementsInstanced/5
完全相同,除了對應的繪製呼叫所傳輸的第 i
個元素將取自每個啟用陣列的元素 Indices
[i] + Basevertex
。如果結果值大於 Type
可表示的最大值,則就好像計算已向上轉換為 32 位元不帶正負號的整數(在溢位條件下環繞)。如果總和為負數,則此運算未定義。
drawElementsInstancedBaseVertexBaseInstance(Mode, Count, Type, Indices, Instancecount, Basevertex, Baseinstance)
檢視原始碼-spec drawElementsInstancedBaseVertexBaseInstance(Mode, Count, Type, Indices, Instancecount, Basevertex, Baseinstance) -> ok when Mode :: enum(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Instancecount :: i(), Basevertex :: i(), Baseinstance :: i().
gl:drawElementsInstancedBaseVertexBaseInstance/7
的行為與 gl:drawElementsInstanced/5
相同,差別在於對應的繪圖呼叫所傳輸的第 i
個元素,會從每個啟用的陣列中的 Indices
[i] + Basevertex
元素取得。如果計算後的數值大於 Type
所能表示的最大值,則會如同將計算結果向上轉換為 32 位元無號整數(在溢位的情況下會環繞)。如果總和為負數,則此操作的行為未定義。
-spec drawPixels(Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem()) -> ok.
gl:drawPixels/5
從記憶體讀取像素資料,並將其寫入相對於目前光柵位置的幀緩衝區,前提是光柵位置有效。使用 gl:rasterPos()
或 gl:windowPos()
來設定目前的光柵位置;使用 gl:get()
並帶入參數 ?GL_CURRENT_RASTER_POSITION_VALID
來判斷指定的光柵位置是否有效,以及使用 gl:get()
並帶入參數 ?GL_CURRENT_RASTER_POSITION
來查詢光柵位置。
-spec drawRangeElements(Mode, Start, End, Count, Type, Indices) -> ok when Mode :: enum(), Start :: i(), End :: i(), Count :: i(), Type :: enum(), Indices :: offset() | mem().
gl:drawRangeElements/6
是 gl:drawElements/4
的限制形式。Mode
和 Count
與 gl:drawElements/4
的對應參數相同,但額外限制陣列 Count
中的所有值都必須介於 Start
和 End
之間(包含)。
-spec drawRangeElementsBaseVertex(Mode, Start, End, Count, Type, Indices, Basevertex) -> ok when Mode :: enum(), Start :: i(), End :: i(), Count :: i(), Type :: enum(), Indices :: offset() | mem(), Basevertex :: i().
gl:drawRangeElementsBaseVertex/7
是 gl:drawElementsBaseVertex/5
的限制形式。Mode
、Count
和 Basevertex
與 gl:drawElementsBaseVertex/5
的對應參數相同,但額外限制陣列 Indices
中的所有值在加上 Basevertex
之前,必須介於 Start
和 End
之間(包含)。超出範圍 [Start
, End
] 的索引值會以與 gl:drawElementsBaseVertex/5
相同的方式處理。對應的繪圖呼叫所傳輸的第 i
個元素,會從每個啟用的陣列中的 Indices
[i] + Basevertex
元素取得。如果計算後的數值大於 Type
所能表示的最大值,則會如同將計算結果向上轉換為 32 位元無號整數(在溢位的情況下會環繞)。如果總和為負數,則此操作的行為未定義。
gl:drawTransformFeedback/2
使用由 Id
指定的轉換回饋擷取的計數,繪製由 Mode
指定類型的圖元。呼叫 gl:drawTransformFeedback/2
等同於呼叫 gl:drawArrays/3
,其中 Mode
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流零上擷取的頂點數量。
gl:drawTransformFeedbackInstanced/3
使用由 Id
指定的轉換回饋物件的 Stream
指定的轉換回饋串流所擷取的計數,繪製由 Mode
指定類型的多個圖元範圍副本。呼叫 gl:drawTransformFeedbackInstanced/3
等同於呼叫 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流零上擷取的頂點數量。
gl:drawTransformFeedbackStream/3
使用由 Id
指定的轉換回饋物件的 Stream
指定的轉換回饋串流所擷取的計數,繪製由 Mode
指定類型的圖元。呼叫 gl:drawTransformFeedbackStream/3
等同於呼叫 gl:drawArrays/3
,其中 Mode
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流 Stream
上擷取的頂點數量。
-spec drawTransformFeedbackStreamInstanced(Mode :: enum(), Id :: i(), Stream :: i(), Instancecount :: i()) -> ok.
gl:drawTransformFeedbackStreamInstanced/4
使用由 Id
指定的轉換回饋物件的 Stream
指定的轉換回饋串流所擷取的計數,繪製由 Mode
指定類型的多個圖元範圍副本。呼叫 gl:drawTransformFeedbackStreamInstanced/4
等同於呼叫 gl:drawArraysInstanced/4
,其中 Mode
和 Instancecount
如指定,First
設定為零,且 Count
設定為上次在由 Id
指定的轉換回饋物件上啟用轉換回饋時,在頂點串流 Stream
上擷取的頂點數量。
-spec edgeFlag(Flag :: 0 | 1) -> ok.
等同於 edgeFlagv/1
。
gl:edgeFlagPointer/2
指定在渲染時使用的布林邊緣旗標陣列的位置和資料格式。Stride
指定從一個邊緣旗標到下一個邊緣旗標的位元組跨度,允許將頂點和屬性封裝到單個陣列或儲存在單獨的陣列中。
-spec edgeFlagv({Flag :: 0 | 1}) -> ok.
在 gl:'begin'/1
/gl:'end'/0
配對之間指定的每個多邊形、分離三角形或分離四邊形的頂點,都會被標記為邊界或非邊界邊緣的起點。如果在指定頂點時,目前的邊緣旗標為 true,則該頂點會被標記為邊界邊緣的起點。否則,該頂點會被標記為非邊界邊緣的起點。gl:edgeFlag/1
會在 Flag
為 ?GL_TRUE
時將邊緣旗標位元設定為 ?GL_TRUE
,否則設定為 ?GL_FALSE
。
-spec enable(Cap :: enum()) -> ok.
等同於 enablei/2
。
-spec enableClientState(Cap :: enum()) -> ok.
gl:enableClientState/1
和 gl:disableClientState/1
啟用或停用個別的客戶端功能。預設情況下,所有客戶端功能都已停用。gl:enableClientState/1
和 gl:disableClientState/1
都接受單個參數 Cap
,它可以假設以下值之一
gl:enable/1
和 gl:disable/1
啟用和停用各種功能。使用 gl:isEnabled/1
或 gl:get()
來判斷任何功能的目前設定。除了 ?GL_DITHER
和 ?GL_MULTISAMPLE
之外,每個功能的初始值都是 ?GL_FALSE
。?GL_DITHER
和 ?GL_MULTISAMPLE
的初始值是 ?GL_TRUE
。
-spec enableVertexAttribArray(Index :: i()) -> ok.
gl:enableVertexAttribArray/1
和 gl:enableVertexArrayAttrib/2
啟用由 Index
指定的泛型頂點屬性陣列。gl:enableVertexAttribArray/1
使用目前綁定的頂點陣列物件來進行操作,而 gl:enableVertexArrayAttrib/2
則更新 ID 為 Vaobj
的頂點陣列物件的狀態。
-spec 'end'() -> ok.
gl:'begin'/1
和 gl:'end'/0
分隔定義圖元或一組類似圖元的頂點。gl:'begin'/1
接受單個參數,指定頂點以十種方式中的哪一種方式解釋。將 n 視為從 1 開始的整數計數,並將 N 視為指定的頂點總數,則解釋如下
-spec endConditionalRender() -> ok.
條件渲染使用 gl:beginConditionalRender/2
開始,並使用 gl:endConditionalRender/0
結束。在條件渲染期間,如果查詢物件 Id
的 (?GL_SAMPLES_PASSED
) 結果為零,或 (?GL_ANY_SAMPLES_PASSED
) 結果為 ?GL_FALSE
,則所有頂點陣列命令,以及 gl:clear/1
和 gl:clearBuffer()
都沒有作用。設定目前頂點狀態的命令(例如 gl:vertexAttrib()
)的結果未定義。如果 (?GL_SAMPLES_PASSED
) 結果為非零值,或 (?GL_ANY_SAMPLES_PASSED
) 結果為 ?GL_TRUE
,則不會捨棄這些命令。gl:beginConditionalRender/2
的 Id
參數必須是先前從呼叫 gl:genQueries/1
返回的查詢物件的名稱。Mode
指定如何解釋查詢物件的結果。如果 Mode
為 ?GL_QUERY_WAIT
,則 GL 會等待查詢結果可用,然後使用結果來判斷是否捨棄後續的渲染命令。如果 Mode
為 ?GL_QUERY_NO_WAIT
,則 GL 可以選擇無條件執行後續的渲染命令,而無需等待查詢完成。
-spec endList() -> ok.
等同於 newList/2
。
-spec endQuery(Target :: enum()) -> ok.
gl:beginQuery/2
和 gl:endQuery/1
劃定了查詢物件的邊界。Query
必須是先前呼叫 gl:genQueries/1
所傳回的名稱。如果名稱為 Id
的查詢物件尚不存在,則會以 Target
所決定的類型建立。 Target
必須是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
其中之一。查詢物件的行為取決於其類型,如下所示。
gl:beginQueryIndexed/3
和 gl:endQueryIndexed/2
劃定了查詢物件的邊界。Query
必須是先前呼叫 gl:genQueries/1
所傳回的名稱。如果名稱為 Id
的查詢物件尚不存在,則會以 Target
所決定的類型建立。 Target
必須是 ?GL_SAMPLES_PASSED
、?GL_ANY_SAMPLES_PASSED
、?GL_PRIMITIVES_GENERATED
、?GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
或 ?GL_TIME_ELAPSED
其中之一。查詢物件的行為取決於其類型,如下所示。
-spec endTransformFeedback() -> ok.
轉換回饋模式會捕捉頂點著色器(如果啟用了幾何著色器,則為幾何著色器)所寫入的 varying 變數值。在呼叫 gl:beginTransformFeedback/1
之後,直到後續呼叫 gl:endTransformFeedback/0
,轉換回饋才被視為啟動。轉換回饋指令必須成對使用。
-spec evalCoord1d(U :: f()) -> ok.
等同於 evalCoord2fv/1
。
-spec evalCoord1dv({U :: f()}) -> ok.
等同於 evalCoord2fv/1
。
-spec evalCoord1f(U :: f()) -> ok.
等同於 evalCoord2fv/1
。
-spec evalCoord1fv({U :: f()}) -> ok.
等同於 evalCoord2fv/1
。
等同於 evalCoord2fv/1
。
等同於 evalCoord2fv/1
。
等同於 evalCoord2fv/1
。
gl:evalCoord1()
會在引數 U
評估已啟用的單一維度映射。gl:evalCoord2()
對於使用兩個域值 U
和 V
的二維映射執行相同的操作。若要定義映射,請呼叫 glMap1
和 glMap2
;若要啟用和停用它,請呼叫 gl:enable/1
和 gl:disable/1
。
等同於 evalMesh2/5
。
gl:mapGrid()
和 gl:evalMesh()
搭配使用,以有效率地產生和評估一系列均勻間隔的映射域值。gl:evalMesh()
會逐步執行一或二維網格的整數域,其範圍是 glMap1
和 glMap2
指定的評估映射的域。Mode
決定結果頂點是以點、線或填滿的多邊形連接。
-spec evalPoint1(I :: i()) -> ok.
等同於 evalPoint2/2
。
gl:mapGrid()
和 gl:evalMesh()
搭配使用,以有效率地產生和評估一系列均勻間隔的映射域值。gl:evalPoint()
可用於評估與 gl:evalMesh()
遍歷的相同網格空間中的單個網格點。呼叫 gl:evalPoint1/1
等同於呼叫 glEvalCoord1( i.ð u+u 1 ); 其中 ð u=(u 2-u 1)/n
gl:feedbackBuffer/3
函數控制回饋。回饋就像選擇一樣,是一種 GL 模式。透過呼叫 gl:renderMode/1
並使用 ?GL_FEEDBACK
來選擇此模式。當 GL 處於回饋模式時,不會產生任何像素來進行光柵化。相反地,使用 GL 將有關原本會進行光柵化的圖元資訊回饋到應用程式。
gl:fenceSync/2
會建立一個新的 fence sync 物件,將 fence 指令插入 GL 指令串流中,並將其與該 sync 物件關聯,然後傳回對應於該 sync 物件的非零名稱。
-spec finish() -> ok.
gl:finish/0
在所有先前呼叫的 GL 指令的效果完成之前不會傳回。這些效果包括對 GL 狀態的所有變更、對連線狀態的所有變更以及對幀緩衝區內容的所有變更。
-spec flush() -> ok.
不同的 GL 實作會在數個不同的位置緩衝指令,包括網路緩衝區和圖形加速器本身。gl:flush/0
會清空所有這些緩衝區,使所有已發出的指令在被實際渲染引擎接受時盡快執行。雖然此執行可能不會在任何特定時間段內完成,但它會在有限的時間內完成。
gl:flushMappedBufferRange/3
表示已對映射緩衝區物件的範圍進行修改。緩衝區物件先前必須使用 ?GL_MAP_FLUSH_EXPLICIT_BIT
旗標進行映射。
-spec fogCoordd(Coord :: f()) -> ok.
等同於 fogCoordfv/1
。
-spec fogCoorddv({Coord :: f()}) -> ok.
等同於 fogCoordfv/1
。
-spec fogCoordf(Coord :: f()) -> ok.
等同於 fogCoordfv/1
。
-spec fogCoordfv({Coord :: f()}) -> ok.
gl:fogCoord()
指定與每個頂點和目前光柵位置關聯的霧坐標。指定的值會進行內插,並用於計算霧顏色(請參閱 gl:fog()
)。
gl:fogCoordPointer/3
指定在渲染時要使用的霧坐標陣列的位置和資料格式。Type
指定每個霧坐標的資料類型,而 Stride
指定從一個霧坐標到下一個霧坐標的位元組跨距,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。
等同於 fogiv/2
。
等同於 fogiv/2
。
等同於 fogiv/2
。
霧一開始會停用。啟用時,霧會影響光柵化幾何圖形、點陣圖和像素區塊,但不影響緩衝區清除作業。若要啟用和停用霧,請呼叫 gl:enable/1
和 gl:disable/1
並使用引數 ?GL_FOG
。
gl:framebufferParameteri/3
和 glNamedFramebufferParameteri
修改指定幀緩衝區物件中名為 Pname
的參數的值。預設繪製和讀取幀緩衝區沒有可修改的參數,因此它們不是這些指令的有效目標。
-spec framebufferRenderbuffer(Target, Attachment, Renderbuffertarget, Renderbuffer) -> ok when Target :: enum(), Attachment :: enum(), Renderbuffertarget :: enum(), Renderbuffer :: i().
gl:framebufferRenderbuffer/4
和 glNamedFramebufferRenderbuffer
將渲染緩衝區附加為指定幀緩衝區物件的邏輯緩衝區之一。渲染緩衝區無法附加到預設繪製和讀取幀緩衝區,因此它們不是這些指令的有效目標。
-spec framebufferTextureLayer(Target :: enum(), Attachment :: enum(), Texture :: i(), Level :: i(), Layer :: i()) -> ok.
這些指令會將所選 mipmap 層級或紋理物件的影像附加為指定幀緩衝區物件的邏輯緩衝區之一。紋理無法附加到預設繪製和讀取幀緩衝區,因此它們不是這些指令的有效目標。
-spec frontFace(Mode :: enum()) -> ok.
在完全由不透明封閉曲面組成的場景中,背面的多邊形永遠不可見。消除這些不可見的多邊形顯然具有加快影像渲染速度的優點。若要啟用和停用消除背面的多邊形,請呼叫 gl:enable/1
和 gl:disable/1
並使用引數 ?GL_CULL_FACE
。
-spec frustum(Left :: f(), Right :: f(), Bottom :: f(), Top :: f(), Near_val :: f(), Far_val :: f()) -> ok.
gl:frustum/6
描述產生透視投影的透視矩陣。目前的矩陣 (請參閱 gl:matrixMode/1
) 會乘以這個矩陣,而結果會取代目前的矩陣,就像呼叫 gl:multMatrix()
並將下列矩陣作為其引數一樣
gl:genBuffers/1
會在 Buffers
中傳回 N
個緩衝區物件名稱。無法保證這些名稱形成連續的整數集;但是,保證在呼叫 gl:genBuffers/1
之前,傳回的名稱都未使用。
-spec generateMipmap(Target :: enum()) -> ok.
-spec generateTextureMipmap(Texture :: i()) -> ok.
gl:generateMipmap/1
和 gl:generateTextureMipmap/1
會為指定的紋理物件產生 mipmap。對於 gl:generateMipmap/1
,綁定到 Target
的紋理物件。對於 gl:generateTextureMipmap/1
,Texture
是紋理物件的名稱。
gl:genFramebuffers/1
會在 Ids
中傳回 N
個幀緩衝區物件名稱。無法保證這些名稱形成連續的整數集;但是,保證在呼叫 gl:genFramebuffers/1
之前,傳回的名稱都未使用。
gl:genLists/1
接受一個引數 Range
。它會回傳一個整數 n
,使得會建立 Range
個連續的空白顯示列表,命名為 n、n+1、...、n+range-1。如果 Range
為 0,如果沒有可用的 Range
個連續名稱群組,或是產生任何錯誤,則不會產生顯示列表,並回傳 0。
gl:genProgramPipelines/1
在 Pipelines
中回傳 N
個先前未使用的程式管線物件名稱。這些名稱會標記為已使用,僅用於 gl:genProgramPipelines/1
,但只有在首次綁定時才會取得程式管線狀態。
gl:genQueries/1
在 Ids
中回傳 N
個查詢物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genQueries/1
之前都未使用。
gl:genRenderbuffers/1
在 Renderbuffers
中回傳 N
個渲染緩衝區物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genRenderbuffers/1
之前都未使用。
gl:genSamplers/1
在 Samplers
中回傳 N
個取樣器物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genSamplers/1
之前都未使用。
gl:genTextures/1
在 Textures
中回傳 N
個紋理名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genTextures/1
之前都未使用。
gl:genTransformFeedbacks/1
在 Ids
中回傳 N
個先前未使用的變換回饋物件名稱。這些名稱會標記為已使用,僅用於 gl:genTransformFeedbacks/1
,但只有在首次綁定時才會取得變換回饋狀態。
gl:genVertexArrays/1
在 Arrays
中回傳 N
個頂點陣列物件名稱。不保證這些名稱形成連續的整數集合;但是,保證回傳的名稱在呼叫 gl:genVertexArrays/1
之前都未使用。
-spec getActiveAttrib(Program :: i(), Index :: i(), BufSize :: i()) -> {Size :: i(), Type :: enum(), Name :: string()}.
gl:getActiveAttrib/3
回傳由 Program
指定的程式物件中活動屬性變數的相關資訊。可以透過呼叫 gl:getProgram()
並使用值 ?GL_ACTIVE_ATTRIBUTES
來取得活動屬性的數量。Index
的值為 0 會選取第一個活動屬性變數。Index
的允許值範圍從零到活動屬性變數的數量減一。
-spec getActiveSubroutineName(Program :: i(), Shadertype :: enum(), Index :: i(), Bufsize :: i()) -> string().
gl:getActiveSubroutineName/4
從 Program
中指定的程式物件查詢活動的著色器副程式統一變數的名稱。Index
指定由 Stage
給定的著色器階段中的著色器副程式統一變數的索引,且必須介於零和著色器階段的 ?GL_ACTIVE_SUBROUTINES
值減一之間。
-spec getActiveSubroutineUniformName(Program :: i(), Shadertype :: enum(), Index :: i(), Bufsize :: i()) -> string().
gl:getActiveSubroutineUniformName/4
擷取活動的著色器副程式統一變數的名稱。Program
包含包含統一變數的程式名稱。Shadertype
指定 Index
給定的統一變數位置有效的階段。Index
必須介於零和著色器階段的 ?GL_ACTIVE_SUBROUTINE_UNIFORMS
值減一之間。
-spec getActiveUniform(Program :: i(), Index :: i(), BufSize :: i()) -> {Size :: i(), Type :: enum(), Name :: string()}.
gl:getActiveUniform/3
回傳由 Program
指定的程式物件中活動統一變數的相關資訊。可以透過呼叫 gl:getProgram()
並使用值 ?GL_ACTIVE_UNIFORMS
來取得活動統一變數的數量。Index
的值為 0 會選取第一個活動統一變數。Index
的允許值範圍從零到活動統一變數的數量減一。
-spec getActiveUniformBlockiv(Program :: i(), UniformBlockIndex :: i(), Pname :: enum(), Params :: mem()) -> ok.
gl:getActiveUniformBlockiv/4
擷取關於 Program
內的活動統一區塊的相關資訊。
-spec getActiveUniformBlockName(Program :: i(), UniformBlockIndex :: i(), BufSize :: i()) -> string().
gl:getActiveUniformBlockName/3
擷取位於 Program
內 UniformBlockIndex
的活動統一區塊的名稱。
gl:getActiveUniformName/3
回傳位於 Program
內 UniformIndex
的活動統一變數的名稱。如果 UniformName
不是 NULL,則最多會將 BufSize
個字元(包含 null 終止符)寫入到由 UniformName
指定的位址的陣列中。如果 Length
不是 NULL,則會將寫入(或將會寫入)UniformName
的字元數(不包含 null 終止符)放置在 Length
中指定的位址的變數中。如果 Length
為 NULL,則不會回傳長度。Program
中最長統一變數名稱的長度由 ?GL_ACTIVE_UNIFORM_MAX_LENGTH
的值給定,可以使用 gl:getProgram()
進行查詢。
gl:getActiveUniformsiv/3
查詢名稱為 Pname
的參數的值,適用於 Program
內索引於 UniformIndices
的 UniformCount
個無符號整數陣列中指定的每個統一變數。成功後,每個統一變數的參數值會寫入到位址於 Params
中指定的陣列中的對應項目。如果產生錯誤,則不會將任何內容寫入 Params
。
gl:getAttachedShaders/2
回傳附加到 Program
的著色器物件的名稱。附加到 Program
的著色器物件的名稱將會回傳至 Shaders
。Shaders
中實際寫入的著色器名稱數量會回傳至 Count
。如果沒有著色器物件附加到 Program
,則 Count
會設為 0。可以在 Shaders
中回傳的最大著色器名稱數量由 MaxCount
指定。
gl:getAttribLocation/2
查詢先前由 Program
指定的連結程式物件中由 Name
指定的屬性變數,並回傳綁定至該屬性變數的通用頂點屬性的索引。如果 Name
是矩陣屬性變數,則會回傳矩陣第一列的索引。如果指定的屬性變數不是指定程式物件中的活動屬性,或如果 Name
以保留的前綴 "gl_" 開頭,則會回傳 -1 的值。
等同於 getIntegerv/1
。
-spec getBooleanv(Pname :: enum()) -> [0 | 1].
等同於 getIntegerv/1
。
gl:getBufferParameteriv/2
在 Data
中回傳由 Target
指定的緩衝區物件的選取參數。
這些函數會在 Data
中回傳指定緩衝區物件的選取參數。
gl:getBufferSubData/4
和 glGetNamedBufferSubData
會回傳指定緩衝區物件的資料儲存區的部分或全部資料內容。從位元組偏移 Offset
開始並延伸 Size
個位元組的資料會從緩衝區物件的資料儲存區複製到 Data
所指向的記憶體。如果緩衝區物件目前已對應,或如果 Offset
和 Size
一起定義超出緩衝區物件資料儲存區範圍的範圍,則會擲回錯誤。
gl:getClipPlane/1
會在 Equation
中回傳 Plane
的平面方程式的四個係數。
gl:getColorTable/4
會在 Table
中回傳由 Target
指定的色彩表內容。不會執行任何像素傳輸作業,但是會執行適用於 gl:readPixels/7
的像素儲存模式。
回傳特定於色彩表 Target
的參數。
gl:getCompressedTexImage/3
和 glGetnCompressedTexImage
會將與 Target
和 Lod
相關聯的壓縮紋理影像傳回至 Pixels
中。glGetCompressedTextureImage
的用途相同,但它會採用紋理物件的 ID,而不是紋理目標。Pixels
應該是一個大小為 BufSize
位元組的陣列,用於 glGetnCompresedTexImage
和 glGetCompressedTextureImage
函數,而對於 gl:getCompressedTexImage/3
而言,則應該是一個大小為 ?GL_TEXTURE_COMPRESSED_IMAGE_SIZE
位元組的陣列。如果實際資料佔用的空間小於 BufSize
,則剩餘的位元組將不會被觸及。Target
指定紋理目標,該函數應從綁定到該目標的紋理中提取資料。Lod
指定所需影像的細節層級編號。
-spec getConvolutionFilter(Target :: enum(), Format :: enum(), Type :: enum(), Image :: mem()) -> ok.
gl:getConvolutionFilter/4
會將目前的 1D 或 2D 卷積濾波器核心傳回為影像。根據 Format
和 Type
中的規範,一維或二維影像會放置在 Image
中。此影像上不會執行任何像素傳輸操作,但會套用相關的像素儲存模式。
gl:getConvolutionParameter()
檢索卷積參數。Target
決定要查詢哪個卷積濾波器。Pname
決定要傳回哪個參數。
-spec getDebugMessageLog(Count :: i(), BufSize :: i()) -> {i(), Sources :: [enum()], Types :: [enum()], Ids :: [i()], Severities :: [enum()], MessageLog :: [string()]}.
gl:getDebugMessageLog/2
從偵錯訊息記錄中檢索訊息。從記錄中檢索最多 Count
個訊息。如果 Sources
不是 NULL,則每個訊息的來源會寫入到陣列中最多 Count
個元素。如果 Types
不是 NULL,則每個訊息的類型會寫入到陣列中最多 Count
個元素。如果 Id
不是 NULL,則每個訊息的識別碼會寫入到陣列中最多 Count
個元素。如果 Severities
不是 NULL,則每個訊息的嚴重性會寫入到陣列中最多 Count
個元素。如果 Lengths
不是 NULL,則每個訊息的長度會寫入到陣列中最多 Count
個元素。
等同於 getIntegerv/1
。
等同於 getIntegerv/1
。
-spec getError() -> enum().
gl:getError/0
會傳回錯誤旗標的值。每個可偵測的錯誤都會被指派一個數值代碼和符號名稱。當發生錯誤時,錯誤旗標會設定為適當的錯誤代碼值。在呼叫 gl:getError/0
之前,不會記錄其他錯誤,錯誤代碼會被傳回,且旗標會重設為 ?GL_NO_ERROR
。如果呼叫 gl:getError/0
會傳回 ?GL_NO_ERROR
,則表示自上次呼叫 gl:getError/0
或自 GL 初始化以來,沒有發生可偵測的錯誤。
等同於 getIntegerv/1
。
等同於 getIntegerv/1
。
gl:getFragDataIndex/2
會傳回當程式物件 Program
最後一次連結時,變數 Name
所綁定的片段顏色的索引。如果 Name
不是 Program
的變數輸出,或是發生錯誤,則會傳回 -1。
gl:getFragDataLocation/2
檢索程式 Program
的使用者定義的變數輸出變數 Name
的指定色彩編號綁定。Program
必須先前已連結。Name
必須是以 null 結尾的字串。如果 Name
不是 Program
內使用中的使用者定義變數輸出片段著色器變數的名稱,則會傳回 -1。
-spec getFramebufferAttachmentParameteriv(Target :: enum(), Attachment :: enum(), Pname :: enum()) -> i().
gl:getFramebufferAttachmentParameteriv/3
和 glGetNamedFramebufferAttachmentParameteriv
會傳回指定幀緩衝區物件附件的參數。
gl:getFramebufferParameteriv/2
和 glGetNamedFramebufferParameteriv
會查詢指定幀緩衝區物件的參數。
-spec getGraphicsResetStatus() -> enum().
某些事件可能會導致 GL 內容重設。此類重設會導致所有內容狀態遺失,並要求應用程式在受影響的內容中重新建立所有物件。
-spec getHistogram(Target :: enum(), Reset :: 0 | 1, Format :: enum(), Type :: enum(), Values :: mem()) -> ok.
gl:getHistogram/5
會將目前的長條圖表傳回為一維影像,其寬度與長條圖相同。此影像上不會執行任何像素傳輸操作,但會遵循適用於 1D 影像的像素儲存模式。
gl:getHistogramParameter()
用於查詢目前長條圖或 Proxy 的參數值。長條圖狀態資訊可以透過呼叫 gl:getHistogramParameter()
並使用 Target
為 ?GL_HISTOGRAM
(以取得目前長條圖表的資訊) 或 ?GL_PROXY_HISTOGRAM
(以取得來自最近 Proxy 要求的資訊) 和 Pname
引數的下列其中一個值來查詢
等同於 getIntegerv/1
。
等同於 getIntegerv/1
。
等同於 getIntegerv/1
。
這些命令會傳回 GL 中簡單狀態變數的值。Pname
是一個符號常數,表示要傳回的狀態變數,而 Data
是一個指向指定類型陣列的指標,用於放置傳回的資料。
-spec getInternalformativ(Target :: enum(), Internalformat :: enum(), Pname :: enum(), BufSize :: i()) -> [i()].
沒有可用的文件。
等同於 getLightiv/2
。
gl:getLight()
會在 Params
中傳回光源參數的值。 Light
會命名光源,並且是 ?GL_LIGHT
i 形式的符號名稱,其中 i 的範圍從 0 到 ?GL_MAX_LIGHTS
- 1 的值。?GL_MAX_LIGHTS
是一個實作相依的常數,大於或等於 8。 Pname
會透過符號名稱指定十個光源參數之一。
等同於 getMapiv/3
。
等同於 getMapiv/3
。
glMap1
和 glMap2
定義求值器。gl:getMap()
會傳回求值器參數。Target
會選擇一個對應,Query
會選擇一個特定的參數,而 V
會指向儲存將傳回值的儲存區。
等同於 getMaterialiv/2
。
gl:getMaterial()
會在 Params
中傳回材質 Face
的參數 Pname
的值。定義了六個參數
-spec getMinmax(Target :: enum(), Reset :: 0 | 1, Format :: enum(), Types :: enum(), Values :: mem()) -> ok.
gl:getMinmax/5
會傳回累積的最小和最大像素值 (以每個元件為基礎計算),在寬度為 2 的一維影像中。第一組傳回值是最小值,而第二組傳回值是最大值。傳回值的格式由 Format
決定,而其類型則由 Types
決定。
gl:getMinmaxParameter()
會透過將 Pname
設定為下列其中一個值來檢索目前最小最大值表的參數
gl:getMultisamplefv/2
會查詢指定樣本的位置。Pname
會指定要檢索的樣本參數,且必須是 ?GL_SAMPLE_POSITION
。Index
對應於應傳回位置的樣本。樣本位置會以 Val[0]
和 Val[1]
中的兩個浮點數值傳回,每個值都在 0 到 1 之間,分別對應於該樣本在 GL 像素空間中的 X
和 Y
位置。(0.5, 0.5) 這對應於像素中心。Index
必須介於 0 到 ?GL_SAMPLES
減 1 的值之間。
等同於 getPixelMapusv/2
。
等同於 getPixelMapusv/2
。
請參閱 gl:pixelMap()
參考頁面,以取得 Map
參數的可接受值說明。gl:getPixelMap()
會在 Data
中傳回 Map
中指定的像素對應的內容。像素對應在執行 gl:readPixels/7
、gl:drawPixels/5
、gl:copyPixels/5
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
、gl:texSubImage3D/11
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
和 gl:copyTexSubImage3D/9
時使用,以將色彩索引、樣板索引、色彩元件和深度元件對應到其他值。
-spec getPolygonStipple() -> binary().
gl:getPolygonStipple/0
會將 32×32 多邊形點畫圖案傳回至 Pattern
。圖案會像呼叫 gl:readPixels/7
,且 height
和 width
均為 32,type
為 ?GL_BITMAP
,而 format
為 ?GL_COLOR_INDEX
,且點畫圖案儲存在內部 32×32 色彩索引緩衝區中一樣,將圖案封裝到記憶體中。然而,與 gl:readPixels/7
不同的是,像素傳輸操作 (位移、偏移、像素對應) 不會套用至傳回的點畫影像。
-spec getProgramBinary(Program :: i(), BufSize :: i()) -> {BinaryFormat :: enum(), Binary :: binary()}.
gl:getProgramBinary/2
會將 Program
已編譯和連結的可執行檔的二進位表示法傳回至位元組陣列,其位址在 Binary
中指定。Binary
中可寫入的最大位元組數由 BufSize
指定。如果程式二進位的大小大於 BufSize
位元組,則會產生錯誤,否則寫入 Binary
的實際位元組數會傳回至位址由 Length
給定的變數。如果 Length
為 ?NULL
,則不會傳回任何長度。
gl:getProgramInfoLog/2
會傳回指定程式物件的資訊記錄。當程式物件連結或驗證時,會修改程式物件的資訊記錄。傳回的字串將以 null 結尾。
gl:getProgramInterfaceiv/3
查詢由 Program
中的 ProgramInterface
所識別的介面屬性,其屬性名稱由 Pname
給定。
gl:getProgram()
在 Params
中傳回特定程式物件的參數值。定義了以下參數
gl:getProgramPipelineInfoLog/2
擷取程式管線物件 Pipeline
的資訊日誌。資訊日誌,包括其空終止符,會寫入位址由 InfoLog
給定的字元陣列中。InfoLog
中可寫入的最大字元數由 BufSize
給定,而寫入 InfoLog
的實際字元數會傳回在位址由 Length
給定的整數中。如果 Length
為 ?NULL
,則不會傳回長度。
gl:getProgramPipelineiv/2
擷取程式管線物件 Pipeline
的屬性值。Pname
指定要擷取其值的參數名稱。參數的值會寫入位址由 Params
給定的變數。
gl:getProgramResourceIndex/3
傳回指派給程式物件 Program
的介面類型 ProgramInterface
中名為 Name
的資源的無符號整數索引。
-spec getProgramResourceLocation(Program :: i(), ProgramInterface :: enum(), Name :: string()) -> i().
gl:getProgramResourceLocation/3
傳回指派給程式物件 Program
的介面 ProgramInterface
中名為 Name
的變數的位置。Program
必須是已成功連結的程式的名稱。ProgramInterface
必須是 ?GL_UNIFORM
、?GL_PROGRAM_INPUT
、?GL_PROGRAM_OUTPUT
、?GL_VERTEX_SUBROUTINE_UNIFORM
、?GL_TESS_CONTROL_SUBROUTINE_UNIFORM
、?GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
、?GL_GEOMETRY_SUBROUTINE_UNIFORM
、?GL_FRAGMENT_SUBROUTINE_UNIFORM
、?GL_COMPUTE_SUBROUTINE_UNIFORM
或 ?GL_TRANSFORM_FEEDBACK_BUFFER
其中之一。
-spec getProgramResourceLocationIndex(Program :: i(), ProgramInterface :: enum(), Name :: string()) -> i().
gl:getProgramResourceLocationIndex/3
傳回指派給程式物件 Program
的介面 ProgramInterface
中名為 Name
的變數的片段顏色索引。Program
必須是已成功連結的程式的名稱。ProgramInterface
必須是 ?GL_PROGRAM_OUTPUT
。
-spec getProgramResourceName(Program :: i(), ProgramInterface :: enum(), Index :: i(), BufSize :: i()) -> string().
gl:getProgramResourceName/4
擷取指派給程式物件 Program
的介面 ProgramInterface
中索引為 Index
的單一作用中資源的名稱字串。Index
必須小於 ProgramInterface
的作用中資源列表中的項目數。
gl:getProgramStage()
查詢附加到程式物件的著色器階段的參數。Program
包含附加著色器的程式名稱。Shadertype
指定要從中查詢參數的階段。Pname
指定應查詢哪個參數。要查詢的參數值會傳回在位址由 Values
給定的變數中。
等效於 getQueryObjectuiv/2
。
等效於 getQueryObjectuiv/2
。
等效於 getQueryObjectuiv/2
。
等效於 getQueryObjectuiv/2
。
gl:getQueryIndexediv/3
在 Params
中傳回由 Target
和 Index
指定的索引查詢物件目標的選定參數。Index
指定查詢物件目標的索引,且必須介於零和目標特定的最大值之間。
gl:getQueryiv/2
在 Params
中傳回由 Target
指定的查詢物件目標的選定參數。
等效於 getQueryObjectuiv/2
。
等效於 getQueryObjectuiv/2
。
等效於 getQueryObjectuiv/2
。
這些命令傳回由 Id
指定的查詢物件的選定參數。gl:getQueryObject()
在 Params
中傳回由 Id
指定的查詢物件的選定參數。gl:getQueryBufferObject()
透過將其寫入 Buffer
的資料儲存區中,以由 Offset
指定的位元組偏移量,傳回由 Id
指定的查詢物件的選定參數。
gl:getRenderbufferParameteriv/2
和 glGetNamedRenderbufferParameteriv
查詢指定的渲染緩衝區物件的參數。
gl:getSamplerParameter()
在 Params
中傳回指定為 Pname
的取樣器參數值。Sampler
定義目標取樣器,且必須是現有取樣器物件的名稱,從先前呼叫 gl:genSamplers/1
傳回。Pname
接受與 gl:samplerParameter()
相同的符號,具有相同的解釋。
gl:getShaderInfoLog/2
傳回指定著色器物件的資訊日誌。當編譯著色器時,會修改著色器物件的資訊日誌。傳回的字串將會以空字元結尾。
gl:getShader()
在 Params
中傳回特定著色器物件的參數值。定義了以下參數
-spec getShaderPrecisionFormat(Shadertype :: enum(), Precisiontype :: enum()) -> {Range :: {i(), i()}, Precision :: i()}.
gl:getShaderPrecisionFormat/2
擷取在指定著色器類型中,以不同數值格式表示數量的實作數值範圍和精確度。ShaderType
指定要擷取其數值精確度和範圍的著色器類型,且必須是 ?GL_VERTEX_SHADER
或 ?GL_FRAGMENT_SHADER
其中之一。PrecisionType
指定要查詢的數值格式,且必須是 ?GL_LOW_FLOAT
、?GL_MEDIUM_FLOAT``?GL_HIGH_FLOAT
、?GL_LOW_INT
、?GL_MEDIUM_INT
或 ?GL_HIGH_INT
其中之一。
gl:getShaderSource/2
傳回由 Shader
指定的著色器物件的原始碼字串串聯。著色器物件的原始碼字串是先前呼叫 gl:shaderSource/2
的結果。此函式傳回的字串將會以空字元結尾。
等效於 getStringi/2
。
gl:getString/1
傳回指向描述目前 GL 連線某些方面的靜態字串的指標。Name
可以是以下其中之一
gl:getSubroutineIndex/3
傳回附加到程式物件的著色器階段中的子程式一致變數的索引。Program
包含附加著色器的程式名稱。Shadertype
指定要從中查詢著色器子程式索引的階段。Name
包含要查詢其名稱的子程式一致變數的空終止名稱。
gl:getSubroutineUniformLocation/3
傳回附加到 Program
的類型為 Shadertype
的著色器階段中子程式一致變數 Name
的位置,其行為與 gl:getUniformLocation/2
相同。
gl:getSynciv/3
擷取同步物件的屬性。Sync
指定要擷取其屬性的同步物件的名稱。
等效於 getTexEnviv/2
。
gl:getTexEnv()
在 Params
中傳回使用 gl:texEnv()
指定的紋理環境的選定值。Target
指定紋理環境。
等效於 getTexGeniv/2
。
等效於 getTexGeniv/2
。
gl:getTexGen()
在 Params
中傳回使用 gl:texGen()
指定的紋理座標產生函式的選定參數。Coord
使用符號常數 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
,命名其中一個 (s
、t
、r
、q
) 紋理座標。
-spec getTexImage(Target :: enum(), Level :: i(), Format :: enum(), Type :: enum(), Pixels :: mem()) -> ok.
gl:getTexImage/5
、glGetnTexImage
和 glGetTextureImage
函式會將紋理影像回傳到 Pixels
中。對於 gl:getTexImage/5
和 glGetnTexImage
,Target
指定所需的紋理影像是由 gl:texImage1D/8
(?GL_TEXTURE_1D
)、gl:texImage2D/9
(?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_2D
或任何 ?GL_TEXTURE_CUBE_MAP_*
) 或 gl:texImage3D/10
(?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP_ARRAY
) 所指定。對於 glGetTextureImage
,Texture
指定紋理物件名稱。除了 gl:getTexImage/5
和 glGetnTexImage
接受的紋理類型外,此函式也接受立方體貼圖紋理物件 (具有有效目標 ?GL_TEXTURE_CUBE_MAP
)。Level
指定所需影像的詳細層級編號。Format
和 Type
指定所需影像陣列的格式和類型。請參閱 gl:texImage1D/8
的參考頁面,以了解 Format
和 Type
參數的可接受值。對於 glGetnTexImage 和 glGetTextureImage 函式,bufSize 會告知接收擷取像素資料的緩衝區大小。glGetnTexImage
和 glGetTextureImage
不會將超過 BufSize
個位元組寫入到 Pixels
中。
gl:getTexLevelParameterfv/3
、gl:getTexLevelParameteriv/3
、glGetTextureLevelParameterfv
和 glGetTextureLevelParameteriv
會在 Params
中回傳特定詳細層級值 (指定為 Level
) 的紋理參數值。對於前兩個函式,Target
定義目標紋理,其為 ?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_PROXY_TEXTURE_1D
、?GL_PROXY_TEXTURE_2D
、?GL_PROXY_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP_POSITIVE_X
、?GL_TEXTURE_CUBE_MAP_NEGATIVE_X
、?GL_TEXTURE_CUBE_MAP_POSITIVE_Y
、?GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
、?GL_TEXTURE_CUBE_MAP_POSITIVE_Z
、?GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
或 ?GL_PROXY_TEXTURE_CUBE_MAP
。剩餘的兩個函式會採用 Texture
引數,該引數指定紋理物件的名稱。
等同於 getTexParameteriv/2
。
等同於 getTexParameteriv/2
。
等同於 getTexParameteriv/2
。
gl:getTexParameter()
和 glGetTextureParameter
會在 Params
中回傳指定為 Pname
的紋理參數的值。 Target
定義目標紋理。?GL_TEXTURE_1D
、?GL_TEXTURE_2D
、?GL_TEXTURE_3D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_RECTANGLE
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
或 ?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
分別指定一維、二維或三維、一維陣列、二維陣列、矩形、立方體貼圖或立方體貼圖陣列、二維多重採樣或二維多重採樣陣列紋理。Pname
接受與 gl:texParameter()
相同的符號,並具有相同的解譯。
-spec getTransformFeedbackVarying(Program :: i(), Index :: i(), BufSize :: i()) -> {Size :: i(), Type :: enum(), Name :: string()}.
可以透過呼叫 gl:getTransformFeedbackVarying/3
來擷取有關連結程式中將在轉換回饋期間擷取的 varying 變數集資訊。gl:getTransformFeedbackVarying/3
提供有關由 Index
選取的 varying 變數的資訊。 Index
為 0 會選取傳遞至 gl:transformFeedbackVaryings/3
的 Varyings
陣列中所指定的第一個 varying 變數,而 Index
的值為 ?GL_TRANSFORM_FEEDBACK_VARYINGS
減一則會選取最後一個這類變數。
gl:getUniformBlockIndex/2
會擷取 Program
內均勻區塊的索引。
等同於 getUniformuiv/2
。
等同於 getUniformuiv/2
。
-spec getUniformIndices(Program :: i(), UniformNames :: [unicode:chardata()]) -> [i()].
gl:getUniformIndices/2
會擷取 Program
內多個均勻變數的索引。
-spec getUniformiv(Program :: i(), Location :: i()) -> {i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i()}.
等同於 getUniformuiv/2
。
glGetUniformLocation
會回傳一個整數,該整數代表程式物件內特定均勻變數的位置。Name
必須是以 null 終止且不包含空白字元的字串。Name
必須是 Program
中不是結構、結構陣列或向量或矩陣子元件的活動均勻變數名稱。如果 Name
沒有對應於 Program
中的活動均勻變數、如果 Name
以保留字首 "gl_" 開頭,或如果 Name
與原子計數器或具名均勻區塊相關聯,則此函式會回傳 -1。
-spec getUniformSubroutineuiv(Shadertype :: enum(), Location :: i()) -> {i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i()}.
gl:getUniformSubroutine()
會擷取目前程式的著色器階段 Shadertype
的位置 Location
中副程式均勻變數的值。 Location
必須小於目前在著色器階段 Shadertype
使用的著色器的 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
值。副程式均勻變數的值會在 Values
中回傳。
-spec getUniformuiv(Program :: i(), Location :: i()) -> {i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i(), i()}.
gl:getUniform()
和 glGetnUniform
會在 Params
中回傳指定均勻變數的值。由 Location
指定的均勻變數類型決定回傳的值數。如果均勻變數在著色器中定義為布林值、整數或浮點數,則會回傳單一值。如果定義為 vec2、ivec2 或 bvec2,則會回傳兩個值。如果定義為 vec3、ivec3 或 bvec3,則會回傳三個值,依此類推。若要查詢儲存在宣告為陣列的均勻變數中的值,請針對陣列的每個元素呼叫 gl:getUniform()
。若要查詢儲存在宣告為結構的均勻變數中的值,請針對結構中的每個欄位呼叫 gl:getUniform()
。宣告為矩陣的均勻變數的值會以欄主序回傳。
等同於 getVertexAttribiv/2
。
等同於 getVertexAttribiv/2
。
等同於 getVertexAttribiv/2
。
等同於 getVertexAttribiv/2
。
gl:getVertexAttrib()
會在 Params
中回傳一般頂點屬性參數的值。要查詢的一般頂點屬性是由 Index
指定,而要查詢的參數是由 Pname
指定。
等同於 getVertexAttribiv/2
。
在有解譯空間時,GL 行為的某些方面可以使用提示來控制。提示會以兩個引數指定。 Target
是一個符號常數,指示要控制的行為,而 Mode
是另一個符號常數,指示所需的行為。每個 Target
的初始值為 ?GL_DONT_CARE
。Mode
可以是下列其中之一
當啟用 ?GL_HISTOGRAM
時,RGBA 顏色元件會透過限制在 [0,1] 範圍、乘以直方圖表格的寬度,並四捨五入到最接近的整數來轉換為直方圖表格索引。然後,會遞增由 RGBA 索引選取的表格項目。(如果直方圖表格的內部格式包含亮度,則從 R 顏色元件衍生的索引會決定要遞增的亮度表格項目。)如果直方圖表格項目的遞增值超過其最大值,則其值會變成未定義。(這不是錯誤。)
-spec indexd(C :: f()) -> ok.
等同於 indexubv/1
。
-spec indexdv({C :: f()}) -> ok.
等同於 indexubv/1
。
-spec indexf(C :: f()) -> ok.
等同於 indexubv/1
。
-spec indexfv({C :: f()}) -> ok.
等同於 indexubv/1
。
-spec indexi(C :: i()) -> ok.
等同於 indexubv/1
。
-spec indexiv({C :: i()}) -> ok.
等同於 indexubv/1
。
-spec indexMask(Mask :: i()) -> ok.
gl:indexMask/1
控制顏色索引緩衝區中個別位元的寫入。Mask
的最低有效位 n 位 (其中 n 是顏色索引緩衝區中的位元數) 會指定遮罩。當遮罩中出現 1 (一) 時,就可以寫入顏色索引緩衝區 (或多個緩衝區) 中的對應位元。當出現 0 (零) 時,對應的位元會受到寫入保護。
gl:indexPointer/3
指定要轉譯時所使用的顏色索引陣列的位置和資料格式。Type
指定每個顏色索引的資料類型,而 Stride
指定從一個顏色索引到下一個顏色索引的位元組跨距,允許將頂點和屬性封裝到單一陣列中或儲存在個別陣列中。
-spec indexs(C :: i()) -> ok.
等同於 indexubv/1
。
-spec indexsv({C :: i()}) -> ok.
等同於 indexubv/1
。
-spec indexub(C :: i()) -> ok.
等同於 indexubv/1
。
-spec indexubv({C :: i()}) -> ok.
gl:index()
更新目前的(單一值)顏色索引。它接受一個參數,即目前顏色索引的新值。
-spec initNames() -> ok.
名稱堆疊在選取模式期間使用,以允許唯一識別渲染命令的集合。它由一組已排序的無符號整數組成。gl:initNames/0
會將名稱堆疊初始化為其預設的空狀態。
gl:interleavedArrays/3
允許您指定並啟用個別的顏色、法線、紋理和頂點陣列,其元素是較大聚合陣列元素的一部分。對於某些實作,這比單獨指定陣列更有效率。
-spec invalidateBufferData(Buffer :: i()) -> ok.
gl:invalidateBufferData/1
使緩衝區物件的資料儲存區的所有內容失效。失效後,緩衝區資料儲存區的內容會變成未定義。
gl:invalidateBufferSubData/3
使緩衝區物件的資料儲存區的全部或部分內容失效。失效後,緩衝區資料儲存區指定範圍的內容會變成未定義。範圍的起始位置由 Offset
給定,其大小由 Length
給定,兩者均以基本機器單位測量。
gl:invalidateFramebuffer/2
和 glInvalidateNamedFramebufferData
使影格緩衝區指定的一組附件的全部內容失效。
-spec invalidateSubFramebuffer(Target :: enum(), Attachments :: [enum()], X :: i(), Y :: i(), Width :: i(), Height :: i()) -> ok.
gl:invalidateSubFramebuffer/6
和 glInvalidateNamedFramebufferSubData
使影格緩衝區指定的一組附件的指定區域的內容失效。
gl:invalidateTexSubImage/8
使整個紋理影像失效。Texture
和 Level
指示要失效的紋理影像。此命令之後,紋理影像中的資料具有未定義的值。
-spec invalidateTexSubImage(Texture, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth) -> ok when Texture :: i(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i().
gl:invalidateTexSubImage/8
使紋理影像的全部或部分失效。Texture
和 Level
指示要失效的紋理影像。此命令之後,該子區域中的資料具有未定義的值。Xoffset
、Yoffset
、Zoffset
、Width
、Height
和 Depth
的解讀方式與 gl:texSubImage3D/11
中相同。對於不具有特定維度的紋理目標,此命令會將這些維度視為大小為 1。例如,若要使二維紋理的一部分失效,應用程式會使用等於零的 Zoffset
和等於一的 Depth
。立方體貼圖紋理會被視為 z 維度中的六個切片的陣列,其中 Zoffset
的值會被解讀為指定面 ?GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ Zoffset
。
-spec isBuffer(Buffer :: i()) -> 0 | 1.
如果 Buffer
目前是緩衝區物件的名稱,gl:isBuffer/1
會傳回 ?GL_TRUE
。如果 Buffer
為零,或是一個非零值,但目前不是緩衝區物件的名稱,或是發生錯誤,gl:isBuffer/1
會傳回 ?GL_FALSE
。
-spec isEnabled(Cap :: enum()) -> 0 | 1.
等同於 isEnabledi/2
。
如果 Cap
是一個已啟用的功能,gl:isEnabled/1
會傳回 ?GL_TRUE
,否則會傳回 ?GL_FALSE
。可以使用 gl:isEnabledi/2
測試已建立索引的布林狀態。對於 gl:isEnabledi/2
,Index
指定要測試的功能索引。Index
必須介於零和 Cap
的已建立索引的功能計數之間。一開始,除了 ?GL_DITHER
之外的所有功能都會停用;?GL_DITHER
一開始會啟用。
-spec isFramebuffer(Framebuffer :: i()) -> 0 | 1.
如果 Framebuffer
目前是影格緩衝區物件的名稱,gl:isFramebuffer/1
會傳回 ?GL_TRUE
。如果 Framebuffer
為零,或如果 ?framebuffer
不是影格緩衝區物件的名稱,或是發生錯誤,gl:isFramebuffer/1
會傳回 ?GL_FALSE
。如果 Framebuffer
是由 gl:genFramebuffers/1
傳回的名稱,但尚未透過呼叫 gl:bindFramebuffer/2
來繫結,則該名稱不是影格緩衝區物件,而 gl:isFramebuffer/1
會傳回 ?GL_FALSE
。
-spec isList(List :: i()) -> 0 | 1.
如果 List
是顯示清單的名稱,gl:isList/1
會傳回 ?GL_TRUE
,如果不是,或是發生錯誤,則會傳回 ?GL_FALSE
。
-spec isProgram(Program :: i()) -> 0 | 1.
如果 Program
是先前使用 gl:createProgram/0
建立且尚未透過 gl:deleteProgram/1
刪除的程式物件名稱,gl:isProgram/1
會傳回 ?GL_TRUE
。如果 Program
為零或是一個非零值,但不是程式物件的名稱,或是發生錯誤,gl:isProgram/1
會傳回 ?GL_FALSE
。
-spec isProgramPipeline(Pipeline :: i()) -> 0 | 1.
如果 Pipeline
目前是程式管線物件的名稱,gl:isProgramPipeline/1
會傳回 ?GL_TRUE
。如果 Pipeline
為零,或如果 ?pipeline
不是程式管線物件的名稱,或是發生錯誤,gl:isProgramPipeline/1
會傳回 ?GL_FALSE
。如果 Pipeline
是由 gl:genProgramPipelines/1
傳回的名稱,但尚未透過呼叫 gl:bindProgramPipeline/1
來繫結,則該名稱不是程式管線物件,而 gl:isProgramPipeline/1
會傳回 ?GL_FALSE
。
-spec isQuery(Id :: i()) -> 0 | 1.
如果 Id
目前是查詢物件的名稱,gl:isQuery/1
會傳回 ?GL_TRUE
。如果 Id
為零,或是一個非零值,但目前不是查詢物件的名稱,或是發生錯誤,gl:isQuery/1
會傳回 ?GL_FALSE
。
-spec isRenderbuffer(Renderbuffer :: i()) -> 0 | 1.
如果 Renderbuffer
目前是渲染緩衝區物件的名稱,gl:isRenderbuffer/1
會傳回 ?GL_TRUE
。如果 Renderbuffer
為零,或如果 Renderbuffer
不是渲染緩衝區物件的名稱,或是發生錯誤,gl:isRenderbuffer/1
會傳回 ?GL_FALSE
。如果 Renderbuffer
是由 gl:genRenderbuffers/1
傳回的名稱,但尚未透過呼叫 gl:bindRenderbuffer/2
或 gl:framebufferRenderbuffer/4
來繫結,則該名稱不是渲染緩衝區物件,而 gl:isRenderbuffer/1
會傳回 ?GL_FALSE
。
-spec isSampler(Sampler :: i()) -> 0 | 1.
如果 Id
目前是取樣器物件的名稱,gl:isSampler/1
會傳回 ?GL_TRUE
。如果 Id
為零,或是一個非零值,但目前不是取樣器物件的名稱,或是發生錯誤,gl:isSampler/1
會傳回 ?GL_FALSE
。
-spec isShader(Shader :: i()) -> 0 | 1.
如果 Shader
是先前使用 gl:createShader/1
建立且尚未透過 gl:deleteShader/1
刪除的著色器物件名稱,gl:isShader/1
會傳回 ?GL_TRUE
。如果 Shader
為零或是一個非零值,但不是著色器物件的名稱,或是發生錯誤,glIsShader
會傳回 ?GL_FALSE
。
-spec isSync(Sync :: i()) -> 0 | 1.
如果 Sync
目前是同步物件的名稱,gl:isSync/1
會傳回 ?GL_TRUE
。如果 Sync
不是同步物件的名稱,或是發生錯誤,gl:isSync/1
會傳回 ?GL_FALSE
。請注意,零不是同步物件的名稱。
-spec isTexture(Texture :: i()) -> 0 | 1.
如果 Texture
目前是紋理的名稱,gl:isTexture/1
會傳回 ?GL_TRUE
。如果 Texture
為零,或是一個非零值,但目前不是紋理的名稱,或是發生錯誤,gl:isTexture/1
會傳回 ?GL_FALSE
。
-spec isTransformFeedback(Id :: i()) -> 0 | 1.
如果 Id
目前是轉換回饋物件的名稱,gl:isTransformFeedback/1
會傳回 ?GL_TRUE
。如果 Id
為零,或如果 ?id
不是轉換回饋物件的名稱,或是發生錯誤,gl:isTransformFeedback/1
會傳回 ?GL_FALSE
。如果 Id
是由 gl:genTransformFeedbacks/1
傳回的名稱,但尚未透過呼叫 gl:bindTransformFeedback/2
來繫結,則該名稱不是轉換回饋物件,而 gl:isTransformFeedback/1
會傳回 ?GL_FALSE
。
-spec isVertexArray(Array :: i()) -> 0 | 1.
如果 Array
目前是頂點陣列物件的名稱,gl:isVertexArray/1
會傳回 ?GL_TRUE
。如果 Array
為零,或如果 Array
不是頂點陣列物件的名稱,或是發生錯誤,gl:isVertexArray/1
會傳回 ?GL_FALSE
。如果 Array
是由 gl:genVertexArrays/1
傳回的名稱,但尚未透過呼叫 gl:bindVertexArray/1
來繫結,則該名稱不是頂點陣列物件,而 gl:isVertexArray/1
會傳回 ?GL_FALSE
。
等同於 lightiv/3
。
等同於 lightiv/3
。
等同於 lightiv/3
。
gl:light()
設定個別光源參數的值。Light
會命名光源,並且是 ?GL_LIGHT
i 形式的符號名稱,其中 i 的範圍從 0 到 ?GL_MAX_LIGHTS
- 1 的值。Pname
會再次使用符號名稱指定十個光源參數之一。Params
是單一值或包含新值的陣列指標。
等同於 lightModeliv/2
。
等同於 lightModeliv/2
。
等同於 lightModeliv/2
。
gl:lightModel()
設定光照模型參數。Pname
指定參數名稱,而 Params
提供新的值。光照模型參數共有三個:
線段虛線化會遮蔽光柵化產生的某些片段;這些片段將不會被繪製。遮蔽是透過使用三個參數來實現的:16 位元的線段虛線模式 Pattern
、重複次數 Factor
和整數虛線計數器 s。
-spec lineWidth(Width :: f()) -> ok.
gl:lineWidth/1
指定反鋸齒和非反鋸齒線段的光柵化寬度。使用寬度非 1 的線段,會根據是否啟用線段反鋸齒而有不同的效果。若要啟用和停用線段反鋸齒,請使用 ?GL_LINE_SMOOTH
參數呼叫 gl:enable/1
和 gl:disable/1
。線段反鋸齒預設為停用。
-spec linkProgram(Program :: i()) -> ok.
gl:linkProgram/1
連結由 Program
指定的程式物件。如果任何類型為 ?GL_VERTEX_SHADER
的著色器物件附加到 Program
,它們將用於建立在可編程頂點處理器上執行的可執行檔。如果任何類型為 ?GL_GEOMETRY_SHADER
的著色器物件附加到 Program
,它們將用於建立在可編程幾何處理器上執行的可執行檔。如果任何類型為 ?GL_FRAGMENT_SHADER
的著色器物件附加到 Program
,它們將用於建立在可編程片段處理器上執行的可執行檔。
-spec listBase(Base :: i()) -> ok.
gl:callLists/1
指定一組偏移量陣列。顯示列表名稱是透過將 Base
加到每個偏移量來產生的。參考有效顯示列表的名稱會被執行;其他名稱則會被忽略。
-spec loadIdentity() -> ok.
gl:loadIdentity/0
使用單位矩陣取代目前的矩陣。這在語義上等同於使用單位矩陣呼叫 gl:loadMatrix()
。
-spec loadMatrixd(M :: matrix()) -> ok.
等同於 loadMatrixf/1
。
-spec loadMatrixf(M :: matrix()) -> ok.
gl:loadMatrix()
使用由 M
指定其元素的矩陣取代目前的矩陣。目前的矩陣是投影矩陣、模型視圖矩陣或紋理矩陣,取決於目前的矩陣模式(請參閱 gl:matrixMode/1
)。
-spec loadName(Name :: i()) -> ok.
名稱堆疊用於選取模式,以允許唯一識別一組渲染指令。它由一組有序的無符號整數組成,且初始為空。
-spec loadTransposeMatrixd(M :: matrix()) -> ok.
-spec loadTransposeMatrixf(M :: matrix()) -> ok.
gl:loadTransposeMatrix()
使用由 M
指定其元素的矩陣取代目前的矩陣。目前的矩陣是投影矩陣、模型視圖矩陣或紋理矩陣,取決於目前的矩陣模式(請參閱 gl:matrixMode/1
)。
-spec logicOp(Opcode :: enum()) -> ok.
gl:logicOp/1
指定一個邏輯運算,當啟用時,該運算會應用於傳入的 RGBA 顏色和幀緩衝區中對應位置的 RGBA 顏色之間。若要啟用或停用邏輯運算,請使用符號常數 ?GL_COLOR_LOGIC_OP
呼叫 gl:enable/1
和 gl:disable/1
。初始值為停用。
-spec map1d(Target :: enum(), U1 :: f(), U2 :: f(), Stride :: i(), Order :: i(), Points :: binary()) -> ok.
等同於 map1f/6
。
-spec map1f(Target :: enum(), U1 :: f(), U2 :: f(), Stride :: i(), Order :: i(), Points :: binary()) -> ok.
評估器提供了一種方法,可以使用多項式或有理多項式映射來產生頂點、法線、紋理座標和顏色。評估器產生的值會被發送到 GL 處理的後續階段,就像它們是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈現的一樣,但產生的值不會更新目前的法線、紋理座標或顏色。
-spec map2d(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder, Points) -> ok when Target :: enum(), U1 :: f(), U2 :: f(), Ustride :: i(), Uorder :: i(), V1 :: f(), V2 :: f(), Vstride :: i(), Vorder :: i(), Points :: binary().
等同於 map2f/10
。
-spec map2f(Target, U1, U2, Ustride, Uorder, V1, V2, Vstride, Vorder, Points) -> ok when Target :: enum(), U1 :: f(), U2 :: f(), Ustride :: i(), Uorder :: i(), V1 :: f(), V2 :: f(), Vstride :: i(), Vorder :: i(), Points :: binary().
評估器提供了一種方法,可以使用多項式或有理多項式映射來產生頂點、法線、紋理座標和顏色。評估器產生的值會被發送到 GL 處理的後續階段,就像它們是使用 gl:vertex()
、gl:normal()
、gl:texCoord()
和 gl:color()
命令呈現的一樣,但產生的值不會更新目前的法線、紋理座標或顏色。
等同於 mapGrid2f/6
。
等同於 mapGrid2f/6
。
等同於 mapGrid2f/6
。
gl:mapGrid()
和 gl:evalMesh()
一起使用,以有效產生和評估一系列均勻間隔的映射域值。gl:evalMesh()
會逐步執行一維或二維格子的整數域,其範圍是由 glMap1
和 glMap2
指定的評估映射域。
等同於 materialiv/3
。
等同於 materialiv/3
。
等同於 materialiv/3
。
gl:material()
將值指派給材質參數。材質參數有兩組匹配的集合。其中一組是 front-facing
集合,用於為點、線段、點陣圖和所有多邊形(當停用雙面光照時)或僅為正面多邊形(當啟用雙面光照時)著色。另一組 back-facing
僅用於在啟用雙面光照時為背面多邊形著色。有關單面和雙面光照計算的詳細資訊,請參閱 gl:lightModel()
參考頁面。
-spec matrixMode(Mode :: enum()) -> ok.
gl:matrixMode/1
設定目前的矩陣模式。Mode
可以採用四個值之一:
-spec memoryBarrier(Barriers :: i()) -> ok.
-spec memoryBarrierByRegion(Barriers :: i()) -> ok.
gl:memoryBarrier/1
定義一個屏障,排序在命令之前發出的記憶體交易相對於屏障之後發出的記憶體交易。就此排序而言,著色器執行的記憶體交易被視為由觸發著色器執行的渲染命令發出。Barriers
是一個位欄位,指示與著色器儲存同步的一組操作;Barriers
中使用的位元如下:
當啟用 ?GL_MINMAX
時,傳入像素的 RGBA 元件會與每個元件的最小值和最大值進行比較,這些值儲存在雙元素 minmax 表中。(第一個元素儲存最小值,第二個元素儲存最大值。)如果像素元件大於最大元素中對應的元件,則會使用像素元件值更新最大元素。如果像素元件小於最小元素中對應的元件,則會使用像素元件值更新最小元素。(在這兩種情況下,如果 minmax 表的內部格式包含亮度,則傳入像素的 R 顏色元件將用於比較。)minmax 表的內容可以在稍後透過呼叫 gl:getMinmax/5
來擷取。minmax 操作可透過分別使用 ?GL_MINMAX
參數呼叫 gl:enable/1
或 gl:disable/1
來啟用或停用。
-spec minSampleShading(Value :: f()) -> ok.
gl:minSampleShading/1
指定在覆蓋像素內對樣本進行著色的速率。透過使用參數 ?GL_SAMPLE_SHADING
呼叫 gl:enable/1
來啟用樣本速率著色。如果停用 ?GL_MULTISAMPLE
或 ?GL_SAMPLE_SHADING
,則樣本著色無效。否則,實作必須為每個覆蓋的片段提供至少與 Value
乘以 Samples
指定的唯一顏色值一樣多的數量,其中 Samples
是目前幀緩衝區的 ?GL_SAMPLES
值。每個覆蓋的片段至少會產生 1 個樣本。
-spec multiDrawArrays(Mode :: enum(), First :: [integer()] | mem(), Count :: [integer()] | mem()) -> ok.
gl:multiDrawArrays/3
使用非常少的子程序呼叫指定多組幾何圖元。您可以預先指定頂點、法線和顏色的獨立陣列,而不是呼叫 GL 程序來傳遞每個個別的頂點、法線、紋理座標、邊緣標誌或顏色,並且可以使用它們,透過單次呼叫 gl:multiDrawArrays/3
來建構一系列圖元。
-spec multiDrawArraysIndirect(Mode :: enum(), Indirect :: offset() | mem(), Drawcount :: i(), Stride :: i()) -> ok.
gl:multiDrawArraysIndirect/4
使用非常少的子程序呼叫指定多個幾何圖元。gl:multiDrawArraysIndirect/4
的行為類似於多次呼叫 gl:drawArraysInstancedBaseInstance/5
,但每次呼叫 gl:drawArraysInstancedBaseInstance/5
的參數都儲存在記憶體中,其位址由 Indirect
給定,並以 Stride
指定的基本機器單元間隔。如果 Stride
為零,則假設陣列在記憶體中緊密封裝。
-spec multiDrawArraysIndirectCount(Mode, Indirect, Drawcount, Maxdrawcount, Stride) -> ok when Mode :: enum(), Indirect :: offset() | mem(), Drawcount :: i(), Maxdrawcount :: i(), Stride :: i().
沒有可用的文件。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
等同於 multiTexCoord4sv/2
。
gl:multiTexCoord()
指定一維、二維、三維或四維的紋理座標。gl:multiTexCoord1()
將目前的紋理座標設為 (s 0 0 1);呼叫 gl:multiTexCoord2()
會將它們設為 (s t 0 1)。同樣地,gl:multiTexCoord3()
將紋理座標指定為 (s t r 1),而 gl:multiTexCoord4()
則明確定義所有四個分量為 (s t r q)。
-spec multMatrixd(M :: matrix()) -> ok.
等同於 multMatrixf/1
。
-spec multMatrixf(M :: matrix()) -> ok.
gl:multMatrix()
將目前矩陣與使用 M
指定的矩陣相乘,並以乘積取代目前矩陣。
-spec multTransposeMatrixd(M :: matrix()) -> ok.
-spec multTransposeMatrixf(M :: matrix()) -> ok.
gl:multTransposeMatrix()
將目前矩陣與使用 M
指定的矩陣相乘,並以乘積取代目前矩陣。
顯示列表是已儲存供後續執行的 GL 命令群組。顯示列表是使用 gl:newList/2
建立的。所有後續命令都會依發出順序放入顯示列表中,直到呼叫 gl:endList/0
為止。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
等同於 normal3sv/1
。
每當發出 gl:normal()
時,目前的法線會設定為給定的座標。位元組、短整數或整數引數會轉換為浮點格式,並使用線性對應,將最大的正可表示整數值對應至 1.0,將最小的負可表示整數值對應至 -1.0。
gl:normalPointer/3
指定在算繪時要使用的法線陣列的位置和資料格式。Type
指定每個法線座標的資料類型,而 Stride
指定從一個法線到下一個法線的位元組跨距,允許將頂點和屬性封裝到單一陣列中,或儲存在個別的陣列中。(在某些實作中,單一陣列儲存可能更有效率;請參閱 gl:interleavedArrays/3
。)
gl:objectPtrLabel/3
為由 Ptr
識別的同步物件加上標籤。
-spec ortho(Left :: f(), Right :: f(), Bottom :: f(), Top :: f(), Near_val :: f(), Far_val :: f()) -> ok.
gl:ortho/6
描述一個產生平行投影的轉換。目前矩陣(請參閱 gl:matrixMode/1
)會與此矩陣相乘,且結果會取代目前矩陣,就如同使用以下矩陣作為引數呼叫 gl:multMatrix()
一樣
-spec passThrough(Token :: f()) -> ok.
等同於 patchParameteri/2
。
gl:patchParameter()
指定將用於圖塊圖元的參數。Pname
指定要修改的參數,且必須是 ?GL_PATCH_VERTICES
、?GL_PATCH_DEFAULT_OUTER_LEVEL
或 ?GL_PATCH_DEFAULT_INNER_LEVEL
。對於 gl:patchParameteri/2
,Value
指定由 Pname
指定之參數的新值。對於 gl:patchParameterfv/2
,Values
指定包含由 Pname
指定之參數新值的陣列位址。
-spec pauseTransformFeedback() -> ok.
gl:pauseTransformFeedback/0
暫停目前作用中轉換回饋物件上的轉換回饋作業。當轉換回饋作業暫停時,轉換回饋仍視為作用中,且變更與物件相關的大部分轉換回饋狀態會導致錯誤。不過,可以在轉換回饋暫停時繫結新的轉換回饋物件。
等同於 pixelMapusv/3
。
等同於 pixelMapusv/3
。
gl:pixelMap()
設定由 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
使用的轉換表或 map
。此外,如果支援 ARB_imaging 子集,則例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
亦受影響。這些 map 的使用方式已完整描述於 gl:pixelTransfer()
參考頁中,部分描述於像素和紋理影像命令的參考頁中。在此參考頁中僅描述 map 的規格。
等同於 pixelStorei/2
。
gl:pixelStore()
設定像素儲存模式,會影響後續 gl:readPixels/7
的操作,以及紋理圖樣的解包(請參閱 gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
、gl:texSubImage3D/11
)、gl:compressedTexImage1D/7
、gl:compressedTexImage2D/8
、gl:compressedTexImage3D/9
、gl:compressedTexSubImage1D/7
、gl:compressedTexSubImage2D/9
或 gl:compressedTexSubImage1D/7
。
等同於 pixelTransferi/2
。
gl:pixelTransfer()
設定像素傳輸模式,會影響後續 gl:copyPixels/5
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
、gl:drawPixels/5
、gl:readPixels/7
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
命令的操作。此外,如果支援 ARB_imaging 子集,則例程 gl:colorTable/6
、gl:colorSubTable/6
、gl:convolutionFilter1D/6
、gl:convolutionFilter2D/7
、gl:histogram/4
、gl:minmax/3
和 gl:separableFilter2D/8
亦受影響。由像素傳輸模式指定的演算法會在像素從影格緩衝區讀取 (gl:copyPixels/5
gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
、gl:copyTexSubImage3D/9
和 gl:readPixels/7
),或從用戶端記憶體解包 (gl:drawPixels/5
、gl:texImage1D/8
、gl:texImage2D/9
、gl:texImage3D/10
、gl:texSubImage1D/7
、gl:texSubImage2D/9
和 gl:texSubImage3D/11
) 後才進行操作。像素傳輸作業會以相同的順序,且以相同的方式進行,無論是哪個命令導致像素作業都一樣。像素儲存模式(請參閱 gl:pixelStore()
)控制從用戶端記憶體讀取像素時的解包,以及將像素寫回用戶端記憶體時的封裝。
gl:pixelZoom/2
指定 x 和 y 縮放因子的值。在執行 gl:drawPixels/5
或 gl:copyPixels/5
時,如果 (xr, yr) 是目前的點陣位置,且給定元素在像素矩形的第 m 列和第 n 行,則中心位於以下角落矩形內的像素:
等同於 pointParameteriv/2
。
等同於 pointParameteriv/2
。
等同於 pointParameteriv/2
。
下列數值可被接受為 Pname
-spec pointSize(Size :: f()) -> ok.
gl:pointSize/1
指定點的點陣化直徑。如果點大小模式被禁用 (參見 gl:enable/1
,參數為 ?GL_PROGRAM_POINT_SIZE
),則此值將用於點陣化點。否則,將使用寫入著色語言內建變數 gl_PointSize 的值。
gl:polygonMode/2
控制多邊形用於點陣化的解譯方式。Face
描述 Mode
適用於哪些多邊形:正面和背面多邊形 (?GL_FRONT_AND_BACK
)。多邊形模式僅影響多邊形的最終點陣化。特別是,多邊形的頂點在套用這些模式之前會被光照、裁剪,並可能被剔除。
當啟用 ?GL_POLYGON_OFFSET_FILL
、?GL_POLYGON_OFFSET_LINE
或 ?GL_POLYGON_OFFSET_POINT
時,每個片段的 depth
值會在從適當頂點的 depth
值內插後偏移。偏移值為 factor×DZ+r×units,其中 DZ 是相對於多邊形螢幕區域的深度變化量測值,而 r 是保證在給定實作中產生可解析偏移的最小值。偏移會在執行深度測試之前以及在將值寫入深度緩衝區之前加入。
沒有可用的文件。
-spec polygonStipple(Mask :: binary()) -> ok.
多邊形點畫,如同線條點畫 (參見 gl:lineStipple/2
),會遮蔽由點陣化產生的某些片段,以建立圖案。點畫與多邊形反鋸齒無關。
-spec popAttrib() -> ok.
等同於 pushAttrib/1
。
-spec popClientAttrib() -> ok.
等同於 pushClientAttrib/1
。
-spec popDebugGroup() -> ok.
等同於 pushDebugGroup/4
。
-spec popMatrix() -> ok.
等同於 pushMatrix/0
。
-spec popName() -> ok.
等同於 pushName/1
。
-spec primitiveRestartIndex(Index :: i()) -> ok.
gl:primitiveRestartIndex/1
指定在啟用圖元重新啟動時特殊處理的頂點陣列元素。這被稱為圖元重新啟動索引。
gl:prioritizeTextures/2
將 Priorities
中給定的 N
個紋理優先權指派給 Textures
中命名的 N
個紋理。
gl:programBinary/3
使用先前從 gl:getProgramBinary/2
傳回的程式二進位檔載入程式物件。BinaryFormat
和 Binary
必須是先前呼叫 gl:getProgramBinary/2
所傳回的,而 Length
必須是 gl:getProgramBinary/2
傳回的長度,或是當 Pname
設定為 ?GL_PROGRAM_BINARY_LENGTH
時呼叫 gl:getProgram()
傳回的長度。如果未滿足這些條件,載入程式二進位檔將會失敗,且 Program
的 ?GL_LINK_STATUS
將會設定為 ?GL_FALSE
。
gl:programParameter()
為程式物件 Program
中由 Pname
指定的參數名稱指定新的值。
-spec programUniformMatrix4x3fv(Program, Location, Transpose, Value) -> ok when Program :: i(), Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
gl:programUniform()
修改統一變數或統一變數陣列的值。要修改的統一變數位置由 Location
指定,它應該是由 gl:getUniformLocation/2
傳回的值。gl:programUniform()
操作由 Program
指定的程式物件。
-spec provokingVertex(Mode :: enum()) -> ok.
Flatshading
頂點著色器變動輸出意味著為圖元的全部頂點指派相同的輸出值。從中取得這些值的頂點稱為 provoking vertex
,而 gl:provokingVertex/1
指定要用作平面著色變動資料來源的頂點。
-spec pushAttrib(Mask :: i()) -> ok.
gl:pushAttrib/1
接受一個引數,此引數為遮罩,指示要儲存在屬性堆疊上的狀態變數群組。符號常數用於設定遮罩中的位元。Mask
通常是藉由將數個這些常數進行位元或運算來建構。特殊遮罩 ?GL_ALL_ATTRIB_BITS
可用於儲存所有可堆疊的狀態。
-spec pushClientAttrib(Mask :: i()) -> ok.
gl:pushClientAttrib/1
接受一個引數,此引數為遮罩,指示要儲存在用戶端屬性堆疊上的用戶端狀態變數群組。符號常數用於設定遮罩中的位元。Mask
通常是藉由將數個這些常數進行位元或運算來建構。特殊遮罩 ?GL_CLIENT_ALL_ATTRIB_BITS
可用於儲存所有可堆疊的用戶端狀態。
gl:pushDebugGroup/4
將由字串 Message
描述的偵錯群組推送至命令串流中。Id
的值指定所產生訊息的 ID。參數 Length
包含 Message
中的字元數。如果 Length
為負數,則表示 Message
包含 Null 終止字串。訊息具有指定的 Source
和 Id
,Type``?GL_DEBUG_TYPE_PUSH_GROUP
和 Severity``?GL_DEBUG_SEVERITY_NOTIFICATION
。GL 將把新的偵錯群組放在偵錯群組堆疊的頂端,該偵錯群組繼承先前位於偵錯群組堆疊頂端的偵錯群組之偵錯輸出量的控制。由於偵錯群組是嚴格分層的,因此對偵錯輸出量的任何額外控制將僅適用於作用中的偵錯群組以及推送在作用中偵錯群組頂端的偵錯群組內。
-spec pushMatrix() -> ok.
每個矩陣模式都有一個矩陣堆疊。在 ?GL_MODELVIEW
模式中,堆疊深度至少為 32。在其他模式 ( ?GL_COLOR
、?GL_PROJECTION
和 ?GL_TEXTURE
) 中,深度至少為 2。任何模式中的目前矩陣都是該模式堆疊頂端的矩陣。
-spec pushName(Name :: i()) -> ok.
名稱堆疊用於選取模式,以允許唯一識別一組渲染指令。它由一組有序的無符號整數組成,且初始為空。
gl:queryCounter/2
使 GL 將目前時間記錄到名為 Id
的查詢物件中。Target
必須為 ?GL_TIMESTAMP
。時間會在 GL 用戶端和伺服器狀態以及影格緩衝區上所有先前的命令都完全實現之後記錄。當記錄時間時,該物件的查詢結果會被標示為可用。gl:queryCounter/2
計時器查詢可以在目標為 ?GL_TIME_ELAPSED
的 gl:beginQuery/2
/ gl:endQuery/1
區塊內使用,而且不會影響該查詢物件的結果。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
等同於 rasterPos4sv/1
。
GL 維護一個在視窗座標中的 3D 位置。這個位置稱為光柵位置 (raster position),用於定位像素和點陣圖寫入操作。它以次像素精確度維護。請參閱 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。
-spec readBuffer(Mode :: enum()) -> ok.
gl:readBuffer/1
指定一個顏色緩衝區作為後續 gl:readPixels/7
、gl:copyTexImage1D/7
、gl:copyTexImage2D/8
、gl:copyTexSubImage1D/6
、gl:copyTexSubImage2D/8
和 gl:copyTexSubImage3D/9
命令的來源。模式
接受十二個或更多預定義值之一。在完全配置的系統中,?GL_FRONT
、?GL_LEFT
和 ?GL_FRONT_LEFT
都命名為前左緩衝區,?GL_FRONT_RIGHT
和 ?GL_RIGHT
命名為前右緩衝區,而 ?GL_BACK_LEFT
和 ?GL_BACK
命名為後左緩衝區。此外,常數 ?GL_COLOR_ATTACHMENT``i
可用於指示第 i
個顏色附件,其中 i
的範圍從零到 ?GL_MAX_COLOR_ATTACHMENTS
的值減一。
-spec readPixels(X, Y, Width, Height, Format, Type, Pixels) -> ok when X :: i(), Y :: i(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Pixels :: mem().
gl:readPixels/7
和 glReadnPixels
從影格緩衝區傳回像素資料,從左下角位於 (X
, Y
) 位置的像素開始,放入從 資料
位置開始的客戶端記憶體中。多個參數控制像素資料在放入客戶端記憶體之前的處理。這些參數使用 gl:pixelStore()
設定。此參考頁面描述了這些三個命令指定的大部分(但不是全部)參數對 gl:readPixels/7
和 glReadnPixels
的影響。
等效於 rectsv/2
。
等效於 rectsv/2
。
等效於 rectsv/2
。
等效於 rectsv/2
。
等效於 rectsv/2
。
等效於 rectsv/2
。
等效於 rectsv/2
。
gl:rect()
支援將矩形有效地指定為兩個角點。每個矩形命令接受四個參數,這些參數組織為兩個連續的 (x y) 座標對,或是指向陣列的兩個指標,每個指標都包含一個 (x y) 對。產生的矩形定義在 z=0 平面中。
-spec releaseShaderCompiler() -> ok.
gl:releaseShaderCompiler/0
向實作提供提示,使其可以釋放與其著色器編譯器相關聯的內部資源。gl:compileShader/1
隨後可能會被呼叫,而實作可能會在那時重新分配先前由呼叫 gl:releaseShaderCompiler/0
所釋放的資源。
-spec renderbufferStorage(Target :: enum(), Internalformat :: enum(), Width :: i(), Height :: i()) -> ok.
gl:renderbufferStorage/4
等效於呼叫 gl:renderbufferStorageMultisample/5
並將 樣本
設定為零,而 glNamedRenderbufferStorage
等效於呼叫 glNamedRenderbufferStorageMultisample
並將樣本設定為零。
-spec renderbufferStorageMultisample(Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i()) -> ok.
gl:renderbufferStorageMultisample/5
和 glNamedRenderbufferStorageMultisample
建立渲染緩衝區物件影像的資料儲存、格式、維度和樣本數。
gl:renderMode/1
設定光柵化模式。它接受一個參數,模式
,它可以採用三個預定義值之一
-spec resetHistogram(Target :: enum()) -> ok.
gl:resetHistogram/1
將目前直方圖表的所有元素重設為零。
-spec resetMinmax(Target :: enum()) -> ok.
gl:resetMinmax/1
將目前 minmax 表的元素重設為其初始值:``最大值'' 元素接收最小可能元件值,而 ``最小值'' 元素接收最大可能元件值。
-spec resumeTransformFeedback() -> ok.
gl:resumeTransformFeedback/0
在目前活動的轉換回饋物件上繼續轉換回饋操作。當轉換回饋操作暫停時,轉換回饋仍被視為處於活動狀態,並且變更與物件相關的大多數轉換回饋狀態會導致錯誤。但是,可以在暫停轉換回饋時繫結新的轉換回饋物件。
等效於 rotatef/4
。
gl:rotate()
產生繞向量 (x y z) 旋轉 角度
度。目前的矩陣(請參閱 gl:matrixMode/1
)乘以旋轉矩陣,乘積取代目前的矩陣,就像使用以下矩陣作為其引數呼叫 gl:multMatrix()
一樣
-spec sampleCoverage(Value :: clamp(), Invert :: 0 | 1) -> ok.
多重取樣以各種與實作相關的次像素位置多次取樣像素,以產生反鋸齒效果。如果啟用多重取樣,它會透明地為點、線條、多邊形和影像進行反鋸齒處理。
gl:sampleMaski/2
設定多字組樣本遮罩 ?GL_SAMPLE_MASK_VALUE
的一個 32 位元子字。
等效於 samplerParameteriv/3
。
等效於 samplerParameteriv/3
。
等效於 samplerParameteriv/3
。
等效於 samplerParameteriv/3
。
等效於 samplerParameteriv/3
。
gl:samplerParameter()
將 參數
中的值指派給指定為 Pname
的取樣器參數。取樣器
指定要修改的取樣器物件,且必須是先前從呼叫 gl:genSamplers/1
傳回的取樣器物件的名稱。Pname
中接受下列符號
等效於 scalef/3
。
gl:scale()
會沿 x
、y
和 z
軸產生不均勻縮放。這三個參數表示沿三個軸的每一個所需的縮放比例因子。
gl:scissor/4
在視窗座標中定義一個稱為剪裁框的矩形。前兩個引數 X
和 Y
指定方塊的左下角。寬度
和 高度
指定方塊的寬度和高度。
gl:scissorArrayv/2
為每個視埠定義在視窗座標中稱為剪裁框的矩形。第一個
指定要修改的第一個剪裁框的索引,而 計數
指定要修改的剪裁框的數量。第一個
必須小於 ?GL_MAX_VIEWPORTS
的值,而 第一個
+ 計數
必須小於或等於 ?GL_MAX_VIEWPORTS
的值。V
指定一個陣列的位址,該陣列包含指定剪裁框左下角以及剪裁框寬度和高度的整數 (依該順序)。
等效於 scissorIndexedv/2
。
gl:scissorIndexed/5
為指定的視埠定義剪裁框。索引
指定要修改的剪裁框的索引。索引
必須小於 ?GL_MAX_VIEWPORTS
的值。對於 gl:scissorIndexed/5
,左
、下
、寬度
和 高度
分別指定剪裁框的左、下、寬度和高度 (以像素為單位)。對於 gl:scissorIndexedv/2
,V
指定一個陣列的位址,該陣列包含指定剪裁框左下角以及剪裁框寬度和高度的整數 (依該順序)。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
等效於 secondaryColor3usv/1
。
GL 會儲存主要四值 RGBA 顏色和次要四值 RGBA 顏色 (其中 alpha 永遠設定為 0.0),這兩個顏色都與每個頂點相關聯。
-spec secondaryColorPointer(Size :: i(), Type :: enum(), Stride :: i(), Pointer :: offset() | mem()) -> ok.
gl:secondaryColorPointer/4
指定在算繪時要使用的顏色元件陣列的位置和資料格式。大小
指定每個顏色的元件數,並且必須為 3。類型
指定每個顏色元件的資料類型,而 間隔
指定從一個顏色到下一個顏色的位元組間隔,允許將頂點和屬性封裝到單一陣列中或儲存在單獨的陣列中。
gl:selectBuffer/2
有兩個引數:緩衝區
是指向不帶正負號的整數陣列的指標,而 大小
表示陣列的大小。緩衝區
在算繪模式為 ?GL_SELECT
時傳回名稱堆疊中的值(請參閱 gl:initNames/0
、gl:loadName/1
、gl:pushName/1
)。(請參閱 gl:renderMode/1
)。必須在啟用選擇模式之前發出 gl:selectBuffer/2
,並且在算繪模式為 ?GL_SELECT
時不得發出此命令。
-spec separableFilter2D(Target, Internalformat, Width, Height, Format, Type, Row, Column) -> ok when Target :: enum(), Internalformat :: enum(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Row :: offset() | mem(), Column :: offset() | mem().
gl:separableFilter2D/8
從兩個像素陣列建置二維可分離捲積濾波器核心。
-spec shadeModel(Mode :: enum()) -> ok.
GL 基本圖元可以具有平面或平滑著色。平滑著色(預設值)會導致在光柵化基本圖元時內插頂點的計算顏色,通常會為每個產生的像素片段指派不同的顏色。平面著色只選取一個頂點的計算顏色,並將其指派給光柵化單個基本圖元所產生的所有像素片段。在任一種情況下,頂點的計算顏色都是在啟用光照時光照的結果,或者是在停用光照時指定頂點時的目前顏色。
gl:shaderBinary/3
將預先編譯的著色器二進制碼載入到 Count
個著色器物件中,這些物件的句柄在 Shaders
中給出。Binary
指向儲存在客戶端記憶體中的 Length
位元組的二進制著色器碼。BinaryFormat
指定預編譯碼的格式。
-spec shaderSource(Shader :: i(), String :: [unicode:chardata()]) -> ok.
gl:shaderSource/2
將 Shader
中的原始碼設定為 String
指定的字串陣列中的原始碼。先前儲存在著色器物件中的任何原始碼都會被完全替換。陣列中的字串數量由 Count
指定。如果 Length
為 ?NULL
,則假設每個字串都以 null 終止。如果 Length
是 ?NULL
以外的值,它會指向一個陣列,其中包含 String
中每個對應元素的字串長度。Length
陣列中的每個元素可以包含相應字串的長度(null 字元不計為字串長度的一部分)或小於 0 的值,表示該字串以 null 終止。原始碼字串此時不會掃描或解析;它們只是複製到指定的著色器物件中。
-spec shaderStorageBlockBinding(Program :: i(), StorageBlockIndex :: i(), StorageBlockBinding :: i()) -> ok.
gl:shaderStorageBlockBinding/3
更改程式物件 Program
中索引為 StorageBlockIndex
的活動著色器儲存區塊。StorageBlockIndex
必須是 Program
中的活動著色器儲存區塊索引。StorageBlockBinding
必須小於 ?GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
的值。如果成功,gl:shaderStorageBlockBinding/3
指定 Program
將使用綁定到綁定點 StorageBlockBinding
的緩衝區物件的資料儲存,以讀取和寫入由 StorageBlockIndex
識別的著色器儲存區塊中的緩衝區變數的值。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。首先使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。您可以使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
-spec stencilMask(Mask :: i()) -> ok.
gl:stencilMask/1
控制模版平面中個別位的寫入。Mask
的最低有效 n 位(其中 n 是模版緩衝區中的位數)指定一個遮罩。遮罩中出現 1 的位置,可以寫入模版緩衝區中的對應位。出現 0 的位置,對應位受寫入保護。最初,所有位都啟用寫入。
gl:stencilMaskSeparate/2
控制模版平面中個別位的寫入。Mask
的最低有效 n 位(其中 n 是模版緩衝區中的位數)指定一個遮罩。遮罩中出現 1 的位置,可以寫入模版緩衝區中的對應位。出現 0 的位置,對應位受寫入保護。最初,所有位都啟用寫入。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。您可以使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
模版測試與深度緩衝類似,可以逐像素啟用和停用繪圖。您可以使用 GL 繪圖圖元繪製到模版平面中,然後使用模版平面來遮蔽螢幕的部分區域來渲染幾何圖形和圖像。模版測試通常用於多通道渲染演算法中,以實現特殊效果,例如貼花、輪廓和建構式實體幾何渲染。
等同於 textureBuffer/3
。
-spec texBufferRange(Target :: enum(), Internalformat :: enum(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
等同於 textureBufferRange/5
。
-spec texCoord1d(S :: f()) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1dv({S :: f()}) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1f(S :: f()) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1fv({S :: f()}) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1i(S :: i()) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1iv({S :: i()}) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1s(S :: i()) -> ok.
等同於 texCoord4sv/1
。
-spec texCoord1sv({S :: i()}) -> ok.
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
等同於 texCoord4sv/1
。
gl:texCoord()
指定一維、二維、三維或四維的紋理座標。gl:texCoord1()
將當前紋理座標設定為 (s 0 0 1);呼叫 gl:texCoord2()
將其設定為 (s t 0 1)。同樣,gl:texCoord3()
將紋理座標指定為 (s t r 1),而 gl:texCoord4()
則將所有四個分量明確定義為 (s t r q)。
gl:texCoordPointer/4
指定在渲染時要使用的紋理座標陣列的位置和資料格式。Size
指定每個紋理座標集的座標數量,並且必須為 1、2、3 或 4。Type
指定每個紋理座標的資料類型,而 Stride
指定從一個紋理座標集到下一個紋理座標集的位元組跨距,允許將頂點和屬性打包到單個陣列中或儲存在單獨的陣列中。(在某些實作中,單陣列儲存可能更有效率;請參閱 gl:interleavedArrays/3
。)
等同於 texEnviv/3
。
等同於 texEnviv/3
。
等同於 texEnviv/3
。
紋理環境指定在對片段進行紋理處理時如何解釋紋理值。當 Target
為 ?GL_TEXTURE_FILTER_CONTROL
時,Pname
必須為 ?GL_TEXTURE_LOD_BIAS
。當 Target
為 ?GL_TEXTURE_ENV
時,Pname
可以是 ?GL_TEXTURE_ENV_MODE
、?GL_TEXTURE_ENV_COLOR
、?GL_COMBINE_RGB
、?GL_COMBINE_ALPHA
、?GL_RGB_SCALE
、?GL_ALPHA_SCALE
、?GL_SRC0_RGB
、?GL_SRC1_RGB
、?GL_SRC2_RGB
、?GL_SRC0_ALPHA
、?GL_SRC1_ALPHA
或 ?GL_SRC2_ALPHA
。
等同於 texGeniv/3
。
等同於 texGeniv/3
。
等同於 texGeniv/3
。
等同於 texGeniv/3
。
等同於 texGeniv/3
。
gl:texGen()
選擇紋理座標生成函式或為其中一個函式提供係數。Coord
命名 (s
、t
、r
、q
) 紋理座標之一;它必須是符號 ?GL_S
、?GL_T
、?GL_R
或 ?GL_Q
之一。Pname
必須是三個符號常數之一:?GL_TEXTURE_GEN_MODE
、?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
。如果 Pname
為 ?GL_TEXTURE_GEN_MODE
,則 Params
選擇一種模式,即 ?GL_OBJECT_LINEAR
、?GL_EYE_LINEAR
、?GL_SPHERE_MAP
、?GL_NORMAL_MAP
或 ?GL_REFLECTION_MAP
之一。如果 Pname
為 ?GL_OBJECT_PLANE
或 ?GL_EYE_PLANE
,則 Params
包含對應紋理生成函式的係數。
-spec texImage1D(Target, Level, InternalFormat, Width, Border, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), InternalFormat :: i(), Width :: i(), Border :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
紋理處理將指定紋理影像的一部分映射到啟用紋理處理的每個圖形圖元。若要啟用和停用一維紋理處理,請使用引數 ?GL_TEXTURE_1D
呼叫 gl:enable/1
和 gl:disable/1
。
-spec texImage2D(Target, Level, InternalFormat, Width, Height, Border, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), InternalFormat :: i(), Width :: i(), Height :: i(), Border :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
紋理貼圖允許著色器讀取影像陣列的元素。
texImage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations)
檢視原始碼-spec texImage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Fixedsamplelocations :: 0 | 1.
gl:texImage2DMultisample/6
建立多重取樣紋理影像的資料儲存、格式、尺寸和取樣數量。
texImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, Format, Type, Pixels)
檢視原始碼-spec texImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), InternalFormat :: i(), Width :: i(), Height :: i(), Depth :: i(), Border :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
紋理處理將指定紋理影像的一部分映射到啟用紋理處理的每個圖形圖元。若要啟用和停用三維紋理處理,請使用引數 ?GL_TEXTURE_3D
呼叫 gl:enable/1
和 gl:disable/1
。
texImage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations)
檢視原始碼-spec texImage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i(), Fixedsamplelocations :: 0 | 1.
gl:texImage3DMultisample/7
建立多重取樣紋理影像的資料儲存、格式、尺寸和取樣數量。
等同於 texParameteriv/3
。
等同於 texParameteriv/3
。
等同於 texParameteriv/3
。
等同於 texParameteriv/3
。
等同於 texParameteriv/3
。
gl:texParameter()
和 gl:textureParameter()
將 Params
中的值或多個值指派給指定為 Pname
的紋理參數。對於 gl:texParameter()
,Target
定義目標紋理,可以是 ?GL_TEXTURE_1D
、?GL_TEXTURE_1D_ARRAY
、?GL_TEXTURE_2D
、?GL_TEXTURE_2D_ARRAY
、?GL_TEXTURE_2D_MULTISAMPLE
、?GL_TEXTURE_2D_MULTISAMPLE_ARRAY
、?GL_TEXTURE_3D
、?GL_TEXTURE_CUBE_MAP
、?GL_TEXTURE_CUBE_MAP_ARRAY
或 ?GL_TEXTURE_RECTANGLE
。以下符號可在 Pname
中接受
gl:texStorage1D/4
和 gl:textureStorage1D()
同時指定一維紋理所有層級的儲存需求。使用此命令指定紋理後,除非它是代理紋理,否則所有層級的格式和尺寸都會變成不可變的。但是,影像的內容仍然可以修改,但其儲存需求不得變更。此類紋理稱為 immutable-format
紋理。
-spec texStorage2D(Target :: enum(), Levels :: i(), Internalformat :: enum(), Width :: i(), Height :: i()) -> ok.
gl:texStorage2D/5
和 gl:textureStorage2D()
同時指定二維紋理或一維紋理陣列所有層級的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則所有層級的格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
-spec texStorage2DMultisample(Target, Samples, Internalformat, Width, Height, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Fixedsamplelocations :: 0 | 1.
gl:texStorage2DMultisample/6
和 gl:textureStorage2DMultisample()
指定二維多重採樣紋理的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則其格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
-spec texStorage3D(Target, Levels, Internalformat, Width, Height, Depth) -> ok when Target :: enum(), Levels :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i().
gl:texStorage3D/6
和 gl:textureStorage3D()
同時指定三維、二維陣列或立方體貼圖陣列紋理所有層級的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則所有層級的格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
-spec texStorage3DMultisample(Target, Samples, Internalformat, Width, Height, Depth, Fixedsamplelocations) -> ok when Target :: enum(), Samples :: i(), Internalformat :: enum(), Width :: i(), Height :: i(), Depth :: i(), Fixedsamplelocations :: 0 | 1.
gl:texStorage3DMultisample/7
和 gl:textureStorage3DMultisample()
指定二維多重採樣陣列紋理的儲存需求。一旦使用此命令指定紋理,除非是代理紋理,否則其格式和尺寸都將變為不可變。然而,影像的內容仍然可以修改,但其儲存需求不能改變。這種紋理稱為 不可變格式
紋理。
-spec texSubImage1D(Target, Level, Xoffset, Width, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Width :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
紋理映射將指定紋理影像的一部分映射到啟用紋理的每個圖形圖元上。要啟用或停用一維紋理,請使用參數 ?GL_TEXTURE_1D
呼叫 gl:enable/1
和 gl:disable/1
。
-spec texSubImage2D(Target, Level, Xoffset, Yoffset, Width, Height, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Width :: i(), Height :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
紋理映射將指定紋理影像的一部分映射到啟用紋理的每個圖形圖元上。
-spec texSubImage3D(Target, Level, Xoffset, Yoffset, Zoffset, Width, Height, Depth, Format, Type, Pixels) -> ok when Target :: enum(), Level :: i(), Xoffset :: i(), Yoffset :: i(), Zoffset :: i(), Width :: i(), Height :: i(), Depth :: i(), Format :: enum(), Type :: enum(), Pixels :: offset() | mem().
紋理映射將指定紋理影像的一部分映射到啟用紋理的每個圖形圖元上。
-spec textureBarrier() -> ok.
當著色器階段擷取紋素,且相同的紋素透過片段著色器輸出寫入時,渲染片段的值是未定義的,即使讀取和寫入不在同一個繪圖命令中也是如此。為了安全地透過後續繪圖命令中的紋素擷取讀取寫入紋素的結果,請在兩個繪圖命令之間呼叫 gl:textureBarrier/0
,以保證寫入已完成,並且在執行後續繪圖命令之前快取已失效。
gl:texBuffer/3
和 gl:textureBuffer/3
將指定緩衝區物件的資料儲存區附加到指定的紋理物件,並指定緩衝區物件中找到的紋理影像的儲存格式。紋理物件必須是緩衝區紋理。
-spec textureBufferRange(Texture :: i(), Internalformat :: enum(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
gl:texBufferRange/5
和 gl:textureBufferRange/5
將指定緩衝區物件的資料儲存區範圍附加到指定的紋理物件,並指定緩衝區物件中找到的紋理影像的儲存格式。紋理物件必須是緩衝區紋理。
-spec textureView(Texture, Target, Origtexture, Internalformat, Minlevel, Numlevels, Minlayer, Numlayers) -> ok when Texture :: i(), Target :: enum(), Origtexture :: i(), Internalformat :: enum(), Minlevel :: i(), Numlevels :: i(), Minlayer :: i(), Numlayers :: i().
gl:textureView/8
將紋理物件初始化為別名,或是另一個紋理物件的視圖,與初始化的紋理共用部分或全部父紋理的資料儲存區。紋理
指定先前透過成功呼叫 gl:genTextures/1
所保留的名稱,但尚未繫結或給定目標。目標
指定新初始化紋理的目標,且必須與父紋理的目標相容,在下表中以 原始紋理
給定。
gl:transformFeedbackBufferBase/3
將緩衝區物件 緩衝區
繫結到變換回饋物件 Xfb
的索引 索引
處的繫結點。
-spec transformFeedbackBufferRange(Xfb :: i(), Index :: i(), Buffer :: i(), Offset :: i(), Size :: i()) -> ok.
gl:transformFeedbackBufferRange/5
將由 偏移
和 大小
表示的緩衝區物件 緩衝區
的範圍繫結到變換回饋物件 Xfb
的索引 索引
處的繫結點。
-spec transformFeedbackVaryings(Program :: i(), Varyings :: [unicode:chardata()], BufferMode :: enum()) -> ok.
要記錄在變換回饋模式中的頂點或幾何著色器輸出的名稱,是使用 gl:transformFeedbackVaryings/3
指定的。當幾何著色器處於作用中時,變換回饋會記錄發射頂點中選取的幾何著色器輸出變數的值。否則,會記錄選取的頂點著色器輸出的值。
等效於 translatef/3
。
gl:translate()
產生 (x y z) 的平移。目前矩陣(請參閱 gl:matrixMode/1
)乘以這個平移矩陣,乘積取代目前矩陣,如同呼叫 gl:multMatrix()
時將以下矩陣作為其引數
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
-spec uniformBlockBinding(Program :: i(), UniformBlockIndex :: i(), UniformBlockBinding :: i()) -> ok.
使用 gl:uniformBlockBinding/3
指派作用中 Uniform 區塊的繫結點。每個程式的作用中 Uniform 區塊都有一個對應的 Uniform 緩衝區繫結點。程式
是先前已發出 gl:linkProgram/1
命令的程式物件的名稱。
等效於 uniformMatrix4x3fv/3
。
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x3dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x3fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x4dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix2x4fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix3dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix3fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x2dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x2fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x4dv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix3x4fv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix4dv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix4fv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x2dv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x2fv(Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f()}]) -> ok.
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x3dv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
等效於 uniformMatrix4x3fv/3
。
-spec uniformMatrix4x3fv(Location, Transpose, Value) -> ok when Location :: i(), Transpose :: 0 | 1, Value :: [{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}].
gl:uniform()
修改 Uniform 變數或 Uniform 變數陣列的值。要修改的 Uniform 變數的位置由 位置
指定,它應該是由 gl:getUniformLocation/2
傳回的值。gl:uniform()
在呼叫 gl:useProgram/1
使其成為目前狀態一部分的程式物件上運作。
gl:uniformSubroutines()
使用來自 索引
的子常式索引,載入目前程式的著色器階段 著色器類型
的所有作用中子常式 Uniform,將 索引[i]
儲存到位置 I
的 Uniform。計數
必須等於目前使用中著色器階段 著色器類型
的程式的 ?GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
值。此外,索引
中的所有值都必須小於著色器階段的 ?GL_ACTIVE_SUBROUTINES
值。
-spec useProgram(Program :: i()) -> ok.
gl:useProgram/1
安裝由 程式
指定的程式物件作為目前渲染狀態的一部分。透過使用 gl:attachShader/2
將著色器物件成功附加到程式物件,使用 gl:compileShader/1
成功編譯著色器物件,並使用 gl:linkProgram/1
成功連結程式物件,在程式物件中建立一個或多個可執行檔。
gl:useProgramStages/3
將與指定的一組著色器階段相關聯的程式物件中的可執行檔繫結到由 管線
給定的程式管線物件。管線
指定要繫結可執行檔的程式管線物件。階段
包含一個邏輯組合位,表示在程式管線物件 管線
中使用 程式
內的著色器階段。階段
必須是 ?GL_VERTEX_SHADER_BIT
、?GL_TESS_CONTROL_SHADER_BIT
、?GL_TESS_EVALUATION_SHADER_BIT
、?GL_GEOMETRY_SHADER_BIT
、?GL_FRAGMENT_SHADER_BIT
和 ?GL_COMPUTE_SHADER_BIT
的邏輯組合。此外,可以指定特殊值 ?GL_ALL_SHADER_BITS
,表示應該將 程式
中包含的所有可執行檔安裝到 管線
中。
-spec validateProgram(Program :: i()) -> ok.
gl:validateProgram/1
檢查 程式
中包含的可執行檔是否可以在目前的 OpenGL 狀態下執行。驗證過程產生的資訊將儲存在 程式
的資訊日誌中。驗證資訊可能包含一個空字串,或者可能是一個包含有關目前程式物件如何與目前 OpenGL 狀態的其他部分互動的資訊的字串。這為 OpenGL 實作人員提供了一種方法,可以傳達有關為何目前程式效率低下、次佳、無法執行等等的更多資訊。
-spec validateProgramPipeline(Pipeline :: i()) -> ok.
gl:validateProgramPipeline/1
指示實作驗證 Pipeline
中包含的著色器執行檔與目前的 GL 狀態。實作可能會利用此機會執行任何內部著色器修改,以確保在目前 GL 狀態下,已安裝的著色器能正確運作。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
等同於 vertex4sv/1
。
gl:vertex()
命令在 gl:'begin'/1
/gl:'end'/0
配對中使用,以指定點、線和多邊形的頂點。當呼叫 gl:vertex()
時,目前的顏色、法線、紋理座標和霧座標會與頂點相關聯。
gl:vertexArrayElementBuffer/2
將 ID 為 Buffer
的緩衝區物件繫結到 ID 為 Vaobj
的頂點陣列物件的元素陣列緩衝區繫結點。如果 Buffer
為零,則會移除任何現有繫結到 Vaobj
的元素陣列緩衝區繫結。
-spec vertexArrayVertexBuffer(Vaobj :: i(), Bindingindex :: i(), Buffer :: i(), Offset :: i(), Stride :: i()) -> ok.
gl:bindVertexBuffer/4
和 gl:vertexArrayVertexBuffer/5
將名為 Buffer
的緩衝區繫結到索引由 Bindingindex
給定的頂點緩衝區繫結點。gl:bindVertexBuffer/4
修改目前繫結的頂點陣列物件的繫結,而 gl:vertexArrayVertexBuffer/5
允許呼叫者使用名為 Vaobj
的引數指定頂點陣列物件的 ID,應修改該 ID 的繫結。Offset
和 Stride
分別指定緩衝區中第一個元素的偏移量和緩衝區中元素之間的距離,兩者均以基本機器單位測量。Bindingindex
必須小於 ?GL_MAX_VERTEX_ATTRIB_BINDINGS
的值。Offset
和 Stride
必須大於或等於零。如果 Buffer
為零,則會取消繫結目前繫結到指定繫結點的任何緩衝區。
-spec vertexArrayVertexBuffers(Vaobj :: i(), First :: i(), Buffers :: [i()], Offsets :: [i()], Strides :: [i()]) -> ok.
gl:bindVertexBuffers/4
和 gl:vertexArrayVertexBuffers/5
將現有緩衝區物件陣列的儲存空間繫結到頂點陣列物件中指定數量的連續頂點緩衝區繫結點單位。對於 gl:bindVertexBuffers/4
,頂點陣列物件是目前繫結的頂點陣列物件。對於 gl:vertexArrayVertexBuffers/5
,Vaobj
是頂點陣列物件的名稱。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
gl:vertexAttribBinding/2
和 gl:vertexArrayAttribBinding/3
建立頂點陣列物件的通用頂點屬性(其索引由 Attribindex
給定)與頂點緩衝區繫結(其索引由 Bindingindex
給定)之間的關聯。對於 gl:vertexAttribBinding/2
,受影響的頂點陣列物件是目前繫結的物件。對於 gl:vertexArrayAttribBinding/3
,Vaobj
是頂點陣列物件的名稱。
gl:vertexAttribDivisor/2
修改在單個繪製呼叫中渲染多個圖元實例時,通用頂點屬性前進的速度。如果 Divisor
為零,則位置 Index
的屬性會每個頂點前進一次。如果 Divisor
為非零值,則該屬性會每渲染 Divisor
個頂點集合的實例前進一次。如果屬性的 ?GL_VERTEX_ATTRIB_ARRAY_DIVISOR
值為非零值,則該屬性稱為已實例化。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
等同於 vertexAttribL4dv/2
。
gl:vertexAttrib()
系列進入點允許應用程式在編號位置傳遞通用頂點屬性。
-spec vertexAttribLPointer(Index :: i(), Size :: i(), Type :: enum(), Stride :: i(), Pointer :: offset() | mem()) -> ok.
gl:vertexAttribFormat/5
、gl:vertexAttribIFormat/4
和 gl:vertexAttribLFormat/4
,以及 gl:vertexArrayAttribFormat/6
、gl:vertexArrayAttribIFormat/5
和 gl:vertexArrayAttribLFormat/5
指定頂點陣列中資料的組織方式。前三個呼叫在繫結的頂點陣列物件上運作,而最後三個呼叫會修改 ID 為 Vaobj
的頂點陣列物件的狀態。Attribindex
指定要描述其資料配置的通用頂點屬性陣列的索引,且必須小於 ?GL_MAX_VERTEX_ATTRIBS
的值。
-spec vertexAttribPointer(Index, Size, Type, Normalized, Stride, Pointer) -> ok when Index :: i(), Size :: i(), Type :: enum(), Normalized :: 0 | 1, Stride :: i(), Pointer :: offset() | mem().
gl:vertexAttribPointer/6
、gl:vertexAttribIPointer/5
和 gl:vertexAttribLPointer/5
指定在渲染時要使用的索引 Index
處的通用頂點屬性陣列的位置和資料格式。Size
指定每個屬性的元件數,且必須為 1、2、3、4 或 ?GL_BGRA
。Type
指定每個元件的資料類型,而 Stride
指定從一個屬性到下一個屬性的位元組跨度,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。
gl:vertexBindingDivisor/2
和 gl:vertexArrayBindingDivisor/3
修改在單個繪圖命令中渲染多個圖元實例時,通用頂點屬性前進的速度。如果 Divisor
為零,則使用繫結到 Bindingindex
的緩衝區的屬性會每個頂點前進一次。如果 Divisor
為非零值,則該屬性會每渲染 Divisor
個頂點集合的實例前進一次。如果對應的 Divisor
值為非零值,則該屬性稱為 instanced
。
gl:vertexPointer/4
指定在渲染時要使用的頂點座標陣列的位置和資料格式。Size
指定每個頂點的座標數,且必須為 2、3 或 4。Type
指定每個座標的資料類型,而 Stride
指定從一個頂點到下一個頂點的位元組跨度,允許將頂點和屬性封裝到單個陣列中或儲存在單獨的陣列中。(在某些實作中,單陣列儲存可能更有效率;請參閱 gl:interleavedArrays/3
。)
gl:viewport/4
指定從正規化裝置座標到視窗座標的 x 和 y 的仿射轉換。令 (x nd y nd) 為正規化裝置座標。然後,視窗座標 (x w y w) 的計算方式如下
gl:viewportArrayv/2
同時指定多個視埠的參數。First
指定要修改的第一個視埠的索引,而 Count
指定要修改的視埠數。First
必須小於 ?GL_MAX_VIEWPORTS
的值,且 First
+ Count
必須小於或等於 ?GL_MAX_VIEWPORTS
的值。索引位於範圍 [First
, First
+ Count
) 之外的視埠不會被修改。V
包含浮點數值陣列的位址,該陣列依序指定每個視埠的左邊 (x)、底部 (y)、寬度 (w) 和高度 (h)。x 和 y 給出視埠的左下角位置,而 w 和 h 分別給出視埠的寬度和高度。視埠指定從正規化裝置座標到視窗座標的 x 和 y 的仿射轉換。令 (x nd y nd) 為正規化裝置座標。然後,視窗座標 (x w y w) 的計算方式如下
等同於 viewportIndexedfv/2
。
gl:viewportIndexedf/5
和 gl:viewportIndexedfv/2
指定單一視口的參數。Index
指定要修改的視口索引。Index
必須小於 ?GL_MAX_VIEWPORTS
的值。對於 gl:viewportIndexedf/5
,X
、Y
、W
和 H
分別以像素為單位指定視口的左側、底部、寬度和高度。對於 gl:viewportIndexedfv/2
,V
包含一個浮點數值陣列的地址,依序指定每個視口的左側 (x)、底部 (y)、寬度 (w) 和高度 (h)。x 和 y 給出視口左下角的坐標,而 w 和 h 給出視口的寬度和高度。視口指定了 x 和 y 從標準化裝置坐標到視窗坐標的仿射變換。令 (xnd, ynd) 為標準化裝置坐標。則視窗坐標 (xw, yw) 的計算方式如下:
gl:waitSync/3
會使 GL 伺服器阻塞並等待,直到 Sync
變為已發出訊號的狀態。Sync
是要等待的現有同步物件的名稱。Flags
和 Timeout
目前未使用,必須分別設定為零和特殊值 ?GL_TIMEOUT_IGNORED
。
Flags
和 Timeout
是為預期未來同步物件功能擴展所保留的位置。它們必須具有這些保留值,以便現有呼叫 gl:waitSync/3
的程式碼在出現此類擴展時能正確運作。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
等同於 windowPos3sv/1
。
GL 維護一個在視窗座標中的 3D 位置。這個位置稱為光柵位置 (raster position),用於定位像素和點陣圖寫入操作。它以次像素精確度維護。請參閱 gl:bitmap/7
、gl:drawPixels/5
和 gl:copyPixels/5
。