共用方式為


glPixelStorei 函式

設定圖元儲存模式。

語法

void WINAPI glPixelStorei(
   GLenum pname,
   GLint  param
);

參數

pname

要設定之參數的符號名稱。 其中六個儲存體參數會影響如何將圖元資料傳回至用戶端記憶體,因此對於 glReadPixels 命令而言非常重要。 如下所示。

儲存體參數 描述
GL_PACK_SWAP_BYTES 如果為 true,則會反轉多位元組色彩元件、深度元件、色彩索引或樣板索引的位元組順序。 也就是說,如果四位元組元件是由 位元組 b0b1b2b3 所組成,則會以 b3b2b1 、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 位置,則會略過方程式,以顯示GL_PACK_ROW_LENGTH中下一列第一個圖元的位置,以取得下一個資料列的第一個圖元位置。[newline] 元件或索引,其中n是圖元中的元件或索引數目,l是資料列中的圖元數, (gl-pack-row-length 如果大於零,則圖元常式的 width 引數則為) ,而是 gl-pack-alignment 的值,而s是單一元件的大小,以位元組為單位,如果<為 s,則為 (。 然後就像 = s) 。 如果是 1 位值,則會略過方程式來取得下一個資料列 的位置,以顯示下一個資料列在GL_PACK_ROW_LENGTH中的位置。
元件或索引。 此描述中的單字 元件 是指非索引值紅色、綠色、藍色、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 個 (列會從雙字界限開始) 。

其他六個儲存體參數會影響從用戶端記憶體讀取圖元資料的方式。 這些值對於 glDrawPixelsglTexImage1DglTexImage2DglBitmapglPolygonStipple而言相當重要。 如下所示:

儲存體參數 描述
GL_UNPACK_SWAP_BYTES 如果為 true,則會反轉多位元組色彩元件、深度元件、色彩索引或樣板索引的位元組順序。 也就是說,如果四位元組元件是由 位元組 b0b1b2 、 b3 所組成,則會以 b3b2b1 、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 位置,則會略過方程式,藉由略過方程式來取得下一列第一個圖元的位置,以顯示下一個資料列中第一個圖元的位置GL_UNPACK_ROW_LENGTH。[newline] 元件或索引,其中n是圖元中的元件或索引數目,l是資料列中的圖元數, (gl-pack-row-length 如果大於零,則圖元常式的 width 引數則為) ,而是 gl-pack-alignment 的值,而s是單一元件的大小,以位元組為單位,如果<為 s,則為 (。 然後就像 = s) 。 如果是 1 位值,則會略過方程式來取得下一個資料列 的位置,以顯示下一個資料列在GL_UNPACK_ROW_LENGTH中的位置。
元件或索引。 此描述中的單字 元件 是指非索引值紅色、綠色、藍色、Alpha 和深度。 例如,儲存體格式GL_RGB每個圖元有三個元件:第一個紅色、綠色,最後是藍色。
GL_UNPACK_SKIP_PIXELS 和
GL_UNPACK_SKIP_ROWS
這些值是提供給程式設計人員的便利性;它們不會提供任何無法複製的功能,只要遞增傳遞至glDrawPixelsglTexImage1D、glTexImage2DglBitmapglPolygonStipple的指標即可。 將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函式會設定會影響後續glDrawPixelsglReadPixels作業的圖元儲存模式,以及解壓縮多邊形 stipple 模式, (請參閱glPolygonStipple) , 點陣圖 (請參閱glBitmap) 和紋理圖樣 (請參閱glTexImage1DglTexImage2DglTexSubImage1D 和 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。 參數會先轉換成浮點,再指派給實值參數。

glDrawPixelsglReadPixelsglTexImage1DglTexImage2DglBitmapglPolygonStipple會放在顯示清單中控制記憶體資料的解譯時,圖元儲存模式會生效。 執行顯示清單時生效的圖元儲存模式並不重要。

下列函式會擷取 與 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 [僅限傳統型應用程式]
標頭
Gl.h
程式庫
Opengl32.lib
DLL
Opengl32.dll

另請參閱

glBegin

glBitmap

glDrawPixels

glEnd

glPixelMap

glPixelTransfer

glPixelZoom

glPolygonStipple

glReadPixels

glTexImage1D

glTexImage2D