OpenGL畫素操作

2021-06-09 18:20:03 字數 950 閱讀 4753

簡單的opengl畫素操作

opengl提供了簡潔的函式來操作畫素:

glreadpixels:讀取一些畫素。當前可以簡單理解為「把已經繪製好的畫素(它可能已經被儲存到顯示卡的視訊記憶體中)讀取到記憶體」。

gldrawpixels:繪製一些畫素。當前可以簡單理解為「把記憶體中一些資料作為畫素資料,進行繪製」。

glcopypixels:複製一些畫素。當前可以簡單理解為「把已經繪製好的畫素從乙個位置複製到另乙個位置」。雖然從功能上看,好象等價於先讀取畫素再繪製畫素,但實際上它不需要把已經繪製的畫素(它可能已經被儲存到顯示卡的視訊記憶體中)轉換為記憶體資料,然後再由記憶體資料進行重新的繪製,所以要比先讀取後繪製快很多。

注意:glreadpixels實際上是從緩衝區中讀取資料,如果使用了雙緩衝區,則預設是從正在顯示的緩衝(即前緩衝)中讀取,而繪製工作是預設繪製到後緩衝區的。因此,如果需要讀取已經繪製好的畫素,往往需要先交換前後緩衝。

注意到gldrawpixels函式比glreadpixels函式少了兩個引數,這兩個引數在glreadpixels中分別是表示圖象的起始位置。在gldrawpixels中,不必顯式的指定繪製的位置,這是因為繪製的位置是由另乙個函式glrasterpos*來指定的。glrasterpos*函式的引數與glvertex*類似,通過指定乙個二維/三維/四維座標,opengl將自動計算出該座標對應的螢幕位置,並把該位置作為繪製畫素的起始位置。

[code]

gldrawbuffer(gl_color_attachment0_ext);

glrasterpos2i(0,0);

gldrawpixels(texsize, texsize, texture_format, gl_float, data);

[/code]

等價於glteximage2d();

OpenGL學習筆記 14 畫素操作

影象與點陣圖不同的是,影象的每個儲存可以儲存rgba顏色 繪製乙個矩形畫素資料 void gldrawpixels glsizei width,glsizei height,glenum format,glenum type,const glvoid pixels 如下示例 create check...

OpenGL畫素格式

前文中描述了opengl的影象格式,本文接著描述畫素格式 影象格式可以理解為對gpu中資料的解釋,那麼對於cpu端 也就是記憶體中 的資料解釋就是畫素格式的內容。畫素資料一般會在cpu和gpu中進行傳輸,如果傳輸過程是從gpu到cpu一般稱為壓包 pack 從cpu到gpu的傳輸稱為解包 unpac...

OpenGL畫素預設畫素儲存格式

opengl的畫素儲存格式是有glpixedstore來設定的,預設情況下相鄰兩行的儲存的位置是相差4的整數倍,也就是一行的儲存要用4的整數倍的位元組,不夠的情況下要補充。舉例說明 255,0,0 255,0,0 255,0,0 255,0,0 這裡 255,0,0 表示三個連續的byte,表示乙個...