glPixelStorei 函式
設定圖元儲存模式。
語法
void WINAPI glPixelStorei(
GLenum pname,
GLint param
);
參數
-
pname
-
要設定之參數的符號名稱。 其中六個儲存體參數會影響如何將圖元資料傳回至用戶端記憶體,因此對於 glReadPixels 命令而言非常重要。 如下所示。
儲存體參數 描述 GL_PACK_SWAP_BYTES 如果為 true,則會反轉多位元組色彩元件、深度元件、色彩索引或樣板索引的位元組順序。 也就是說,如果四位元組元件是由 位元組 b0、 b1、 b2、 b3 所組成,則會以 b3、 b2、 b1 、b 1 、 b0 表示儲存在記憶體中,如果GL_PACK_SWAP_BYTES為 true。 GL_PACK_SWAP_BYTES對圖元內元件的記憶體順序沒有任何影響,只會影響元件或索引內的位元組順序。 例如,不論GL_PACK_SWAP_BYTES的值為何,GL_RGB格式圖元的三個元件一律會以紅色第一個、綠色秒和藍色第三個元件儲存。 GL_PACK_LSB_FIRST 如果為 true,位會在位元組內排序,從最小顯著性到最大顯著性;否則,每個位元組中的第一個位是最重要的位。 此參數僅適用于點陣圖資料。 GL_PACK_ROW_LENGTH 如果大於零,GL_PACK_ROW_LENGTH定義資料列中的圖元數目。 如果資料列的第一個圖元位於記憶體中的 p 位置,則會略過 [newline] 元件或索引,其中n是圖元中的元件或索引數目,l是資料列中的圖元數, (gl-pack-row-length 如果大於零,則圖元常式的 width 引數則為) ,而是 gl-pack-alignment 的值,而s是單一元件的大小,以位元組為單位,如果<為 s,則為 (。 然後就像是 = s) 。 如果是 1 位值,則會略過方程式來取得下一個資料列
元件或索引。 此描述中的單字 元件 是指非索引值紅色、綠色、藍色、Alpha 和深度。 例如,儲存體格式GL_RGB每個圖元有三個元件:第一個紅色、綠色,最後是藍色。GL_PACK_SKIP_PIXELS 和
GL_PACK_SKIP_ROWS這些值是提供給程式設計人員的便利性;它們不會提供任何無法複製的功能,只要遞增傳遞至 glReadPixels 的指標即可。 將GL_PACK_SKIP_PIXELS設定為 i 相當於以 i n 元件或索引遞增指標,其中 n 是每個圖元中的元件或索引數目。 將GL_PACK_SKIP_ROWS設定為 j 相當於以 j k 元件或索引遞增指標,其中 k 是每個資料列的元件或索引數目,如GL_PACK_ROW_LENGTH區段中的上述計算。 GL_PACK_ALIGNMENT 指定記憶體中每個圖元資料列開頭的對齊需求。 允許的值為 1 (位元組對齊) 、2 個 (列對齊偶數位節) 、4 個 (字對齊) ,而 8 個 (列會從雙字界限開始) 。 其他六個儲存體參數會影響從用戶端記憶體讀取圖元資料的方式。 這些值對於 glDrawPixels、 glTexImage1D、 glTexImage2D、 glBitmap和 glPolygonStipple而言相當重要。 如下所示:
儲存體參數 描述 GL_UNPACK_SWAP_BYTES 如果為 true,則會反轉多位元組色彩元件、深度元件、色彩索引或樣板索引的位元組順序。 也就是說,如果四位元組元件是由 位元組 b0、 b1、 b2 、 b3 所組成,則會以 b3、 b2、 b1 、b 1 、 b0 表示儲存在記憶體中,如果GL_UNPACK_SWAP_BYTES為 true。 GL_UNPACK_SWAP_BYTES對圖元內元件的記憶體順序沒有任何影響,只會影響元件或索引內的位元組順序。 例如,不論GL_UNPACK_SWAP_BYTES的值為何,GL_RGB格式圖元的三個元件一律會以紅色第一個、綠色秒和藍色第三個元件儲存。 GL_UNPACK_LSB_FIRST 如果為 true,位會在位元組內排序,從最小顯著性到最大顯著性;否則,每個位元組中的第一個位是最重要的位。 這只適用于點陣圖資料。 GL_UNPACK_ROW_LENGTH 如果大於零,GL_UNPACK_ROW_LENGTH定義資料列中的圖元數目。 如果資料列的第一個圖元位於記憶體中的 p 位置,則會略過方程式,藉由略過方程式來取得下一列第一個圖元 [newline] 元件或索引,其中n是圖元中的元件或索引數目,l是資料列中的圖元數, (gl-pack-row-length 如果大於零,則圖元常式的 width 引數則為) ,而是 gl-pack-alignment 的值,而s是單一元件的大小,以位元組為單位,如果<為 s,則為 (。 然後就像是 = s) 。 如果是 1 位值,則會略過方程式來取得下一個資料列
元件或索引。 此描述中的單字 元件 是指非索引值紅色、綠色、藍色、Alpha 和深度。 例如,儲存體格式GL_RGB每個圖元有三個元件:第一個紅色、綠色,最後是藍色。GL_UNPACK_SKIP_PIXELS 和
GL_UNPACK_SKIP_ROWS這些值是提供給程式設計人員的便利性;它們不會提供任何無法複製的功能,只要遞增傳遞至glDrawPixels、glTexImage1D、glTexImage2D、glBitmap或glPolygonStipple的指標即可。 將GL_UNPACK_SKIP_PIXELS設定為 i 相當於以 i n 元件或索引遞增指標,其中 n 是每個圖元中的元件或索引數目。 將GL_UNPACK_SKIP_ROWS設定為 j 相當於以 j k 元件或索引遞增指標,其中 k 是每個資料列的元件或索引數目,如GL_UNPACK_ROW_LENGTH區段中的上述計算。 GL_UNPACK_ALIGNMENT 指定記憶體中每個圖元資料列開頭的對齊需求。 允許的值為 1 (位元組對齊) 、2 個 (列對齊偶數位節) 、4 個 (字對齊) ,而 8 個 (列會從雙字界限開始) 。 -
param
-
pname設定為 的值。
傳回值
此函式不會傳回值。
備註
glPixelStore函式會設定會影響後續glDrawPixels和glReadPixels作業的圖元儲存模式,以及解壓縮多邊形 stipple 模式, (請參閱glPolygonStipple) , 點陣圖 (請參閱glBitmap) 和紋理圖樣 (請參閱glTexImage1D、glTexImage2D、glTexSubImage1D 和 glTexSubImage2D) 。
下表提供每個可使用 glPixelStore設定之儲存體參數的有效值類型、初始值和範圍。
Pname | 類型 | 初始值 | 有效範圍 |
---|---|---|---|
GL_PACK_SWAP_BYTES | Boolean | false | true 或 false |
GL_PACK_SWAP_BYTES | Boolean | false | true 或 false |
GL_PACK_ROW_LENGTH | 整數 | 0 | [0,?) |
GL_PACK_SKIP_ROWS | 整數 | 0 | [0,?) |
GL_PACK_SKIP_PIXELS | 整數 | 0 | [0,?) |
GL_PACK_ALIGNMENT | 整數 | 4 | 1、2、4 或 8 |
GL_UNPACK_SWAP_BYTES | Boolean | false | true 或 false |
GL_UNPACK_LSB_FIRST | Boolean | false | true 或 false |
GL_UNPACK_ROW_LENGTH | 整數 | 0 | [0,?) |
GL_UNPACK_SKIP_ROWS | 整數 | 0 | [0,?) |
GL_UNPACK_SKIP_PIXELS | 整數 | 0 | [0,?) |
GL_UNPACK_ALIGNMENT | 整數 | 4 | 1、2、4 或 8 |
glPixelStoref函式可用來設定任何圖元存放區參數。 如果參數類型為 Boolean,且 param 為 0.0,則參數為 false;否則,它會設定為 true。 如果 pname 是整數類型參數,則 param 會四捨五入為最接近的整數。
同樣地, glPixelStorei 函式也可以用來設定任何圖元存放區參數。 如果 param 為 0,則布林值參數會設定為 false,否則為 true。 參數會先轉換成浮點,再指派給實值參數。
glDrawPixels、glReadPixels、glTexImage1D、glTexImage2D、glBitmap或glPolygonStipple會放在顯示清單中控制記憶體資料的解譯時,圖元儲存模式會生效。 執行顯示清單時生效的圖元儲存模式並不重要。
下列函式會擷取 與 glPixelStore相關的資訊:
glGet 搭配引數GL_PACK_SWAP_BYTES
glGet with argument GL_PACK_LSB_FIRST
glGet 與引數GL_PACK_ROW_LENGTH
glGet with argument GL_PACK_SKIP_ROWS
glGet with argument GL_PACK_SKIP_PIXELS
glGet 搭配引數GL_PACK_ALIGNMENT
glGet with argument GL_UNPACK_SWAP_BYTES
glGet with argument GL_UNPACK_LSB_FIRST
glGet with argument GL_UNPACK_ROW_LENGTH
glGet with argument GL_UNPACK_SKIP_ROWS
glGet 與引數GL_UNPACK_SKIP_PIXELS
glGet with argument GL_UNPACK_ALIGNMENT
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標頭 |
|
程式庫 |
|
DLL |
|