glPixelStoref 函式

設定圖元儲存模式。

語法

void WINAPI glPixelStoref(
   GLenum  pname,
   GLfloat param
);

參數

pname

要設定之參數的符號名稱。 其中六個儲存體參數會影響將圖元資料傳回至用戶端記憶體的方式,因此僅適用于 glReadPixels 命令。 如下所示:

儲存體參數 描述
GL_PACK_SWAP_BYTES 如果為 true,則會反轉多位元組色彩元件的位元組順序、深度元件、色彩索引或樣板索引。 也就是說,如果四位元組元件是由 位元組 b0 、 b1 、 b2 、 b3 所組成,則會以 b3b2 、b 1 、 b1 、 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是資料 (列中的圖元數目,如果其大於零,則為圖元常式的 width 引數,否則為圖元常式) ,a 是 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 個 (列會從雙字界限開始) 。

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

儲存體參數 描述
GL_UNPACK_SWAP_BYTES 如果為 true,則會反轉多位元組色彩元件的位元組順序、深度元件、色彩索引或樣板索引。 也就是說,如果四位元組元件是由 位元組 b0 、 b1 、 b2 、 b3 所組成,則會以 b3b2 、b 1 、 b1 、 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是資料 (列中的圖元數目,如果其大於零,則為圖元常式的 width 引數,否則為圖元常式) ,a 是 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) 和紋理圖樣 (請參閱glTexImage1D、glTexImage2DglTexSubImage1DglTexSubImage2D) 。

下表提供每個可使用 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 且為 true,布林參數會設定為 false。 參數會先轉換成浮點,再指派給實值參數。

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

下列函式會擷 取與 glPixelStore相關的資訊:

glGet with argument GL_PACK_SWAP_BYTES

glGet with argument GL_PACK_LSB_FIRST

具有引數的glGet GL_PACK_ROW_LENGTH

具有引數的glGet GL_PACK_SKIP_ROWS

glGet with argument GL_PACK_SKIP_PIXELS

glGet with argument GL_PACK_ALIGNMENT

具有引數的glGet 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 with argument GL_UNPACK_SKIP_PIXELS

glGet with argument GL_UNPACK_ALIGNMENT

規格需求

需求
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限桌面應用程式]
標頭
Gl.h
程式庫
Opengl32.lib
DLL
Opengl32.dll

另請參閱

glBegin

glBitmap

glDrawPixels

glEnd

glPixelMap

glPixelTransfer

glPixelZoom

glPolygonStipple

glReadPixels

glTexImage1D

glTexImage2D