opengl的畫素儲存格式是有glpixedstore來設定的,預設情況下相鄰兩行的儲存的位置是相差4的整數倍,
也就是一行的儲存要用4的整數倍的位元組,不夠的情況下要補充。舉例說明:
(255,0,0),(255,0,0)_ _
(255,0,0),(255,0,0)_ _
這裡(255,0,0)表示三個連續的byte,「_」表示乙個byte,這樣一行就是「(255,0,0),(255,0,0)_ _」,正好是8個byte,這裡「_」表示補充的byte。
用**來測試一下:讀取rgba,然後再提取其中的rgb,在畫到螢幕上:
#include #include #include #includeusing namespace std;
int winx = 512, winy = 512;
void initialize()
int para;
glgetintegerv(gl_pack_alignment, ¶);
cout << para << endl;
glgetintegerv(gl_unpack_alignment, ¶);
cout << para << endl;
glclearcolor(0., 0., 0., 1);
}void reshape(int w, int h)
void display()
glend();
vectorimage(winx*winy * 4);
glreadpixels(0, 0, winx, winy, gl_rgba, gl_unsigned_byte, image.data());
vectordata;
int len = winx*3 ;
if (len % 4) len += 4 - (len % 4);
data.resize(len*winy);
for (int i = 0; i < winy; i++) }
glclear(gl_color_buffer_bit);
gldrawpixels(winx, winy, gl_rgb, gl_unsigned_byte, data.data());
glfinish();
}void main(int argc,char **argv)
OpenGL畫素操作
簡單的opengl畫素操作 opengl提供了簡潔的函式來操作畫素 glreadpixels 讀取一些畫素。當前可以簡單理解為 把已經繪製好的畫素 它可能已經被儲存到顯示卡的視訊記憶體中 讀取到記憶體 gldrawpixels 繪製一些畫素。當前可以簡單理解為 把記憶體中一些資料作為畫素資料,進行繪...
OpenGL畫素格式
前文中描述了opengl的影象格式,本文接著描述畫素格式 影象格式可以理解為對gpu中資料的解釋,那麼對於cpu端 也就是記憶體中 的資料解釋就是畫素格式的內容。畫素資料一般會在cpu和gpu中進行傳輸,如果傳輸過程是從gpu到cpu一般稱為壓包 pack 從cpu到gpu的傳輸稱為解包 unpac...
OPENGL 單位長度對應螢幕畫素
fovy 視角,指定視景體的視野的角度,以度數為單位,y軸的上下方向 x軸的視角可以由y軸視角和視景體的寬高比計算出 aspect 視景體的寬高比 視窗的縱橫比,即x y znear 指定觀察者到視景體的最近的裁剪面的距離 必須為正數 zfar 指定觀察者到視景體的最遠的裁剪面的距離 必須為正數 在...