在OpenGL中,一切事物都在3D空間中,但我們的屏幕坐標確實2D像素數組,OpenGL大部分工作就是把3D坐標轉換成適應屏幕的2D像素。
3D坐標轉換成2D屏幕坐標的過程是由OpenGL的圖形渲染管線管理的。
圖形渲染管線的工作可以被劃分為兩個主要的部分:
把3D坐標轉換成2D坐標。
把2D坐標轉換成實際有顏色的像素。
注意:2D坐標和像素是不同的,2D坐標精確的描述了一個點在2D空間中的位置,二2D像素是這個點的近似值,2D像素收到你的屏幕/窗口分辨率的限制
圖形渲染管線包含很多部分。首先,我們以數組形式傳遞3D個3D坐標作為圖形渲染管線的輸入,用來表示三角形,這個數組叫做定點數據(Vertex Data);定點數據是一系列定點的集合。一個頂點(Vertex)是一個3D坐標的集合。為了簡單起見,我們假定每個頂點只由一個3D位置和一些顏色值構成。
注意:OpenGL不知道我們傳入的頂點位置和顏色值到底需要構成什么,這個時候就需要我們去指定這些數據去表示渲染類型。做出的這些提示叫做圖元(Primitive),我們可以指定一下三種:GL_POINTS、GL_TRIANGLES、GL_LINE_STRIP。
圖形渲染管線的第一個部分是頂點著色器,它把單獨的頂點作為輸入,頂點著色器的主要目的是吧3D坐標轉換成另外一種3D坐標。同時頂點著色器允許我們隊頂點屬性進行一些基本處理。
圖元裝配階段是將頂點著色器輸出的頂點作為一個輸入,(如果是GL_POINTS,那么就是一個頂點),并把所有的點裝配成指定圖元的形狀。
圖元裝配階段的輸出會傳遞給幾何著色器。集合著色器吧圖元形式的一系列定點作為集合的輸入,它可以通過產生新的頂點構造出新的(或者其他的)圖元來生成其他的形狀。
幾何著色器的輸出會被傳入光柵化階段,它會把圖元轉換成最終屏幕上相應的像素生成供片段作色器使用的片段。在片段著色器運行之前會執行裁剪,裁剪會丟棄在視線范圍外的所有像素,以提供執行效率。
片段著色器的主要目的是計算一個像素的最終顏色。在顏色確定以后,最終會被傳入到一個最后的階段 ,Alpha測試和混合測試階段。
-
OpenGL
+關注
關注
1文章
86瀏覽量
29605
原文標題:OpenGL工作流程:把3D坐標轉換成2D坐標
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何計算才能把坐標系轉換成水平的坐標系?
如何將相對坐標轉換成UBFS中的絕對坐標?
【Altium小課專題 第193篇】PCB封裝如何在2D和3D模式之間進行切換?
全球首款2D/3D視頻轉換實時處理芯片:DA8223
Creaform發布MaxSHOT 3D光學坐標測量系統
2D到3D視頻自動轉換系統

KITTI 3D檢測數據集
將2D/3D圖表和圖形添加到WindowsForms應用程序中
一文了解3D視覺和2D視覺的區別
AN-1249:使用ADV8003評估板將3D圖像轉換成2D圖像

評論