1. 程式人生 > >三維渲染引擎設計與實踐(四)

三維渲染引擎設計與實踐(四)

方式 lora 扇面 多個 幀緩存 binding osg smo tco

五、繪制幾何對象和文字

幀緩存(Frame Buffer)為用戶與顯示設備交互的一個接口,將顯示的畫面抽象成一塊可以進行讀寫操作的內存區域

幀緩存的每一個存儲單元都對應顯示屏上的一個像素。整個緩存空間對應當前屏幕上渲染的一幀

5.1幾何元素的儲存

頂點屬性:空間坐標值、法線、顏色坐標、紋理坐標、霧坐標。

點的法線是在使用Phone或Gouraud模型時計算光照使用。

立即模式(immediate mode) 頂點數組(vertex array) 顯示列表(display list)

頂點緩存對象(VBO) 像素緩存對象(Pixel Buffer Object,PBO)

顯示列表是大部分OSG程序所使用的默認繪制優化行為,而頂點數組則是默認的幾何體構建方式。

OSG同樣將幾何圖元的類型劃分為:點(GL_POINTS)、線段(GL_LINES)、線條帶(GL_LINE_STRIP)、閉環線(GL_LINE_LOOP)、三角形(GL_TRIANGLES)、三角條帶(GL_TRIANGLE_STRIP)、三角扇面(GL_TRIANGLE_FAN)、四邊形(GL_QUADS)、四邊形條帶(GL_QUAD_STRIP)以及多邊形(GL_POLYGON)

OpenGL的頂點屬性設置原則是:每一個頂點只能對應一個位置坐標,每個紋理單元有一個紋理坐標值;此外,每個頂點至多關聯一個法線坐標,一個顏色值,以及一個霧坐標等;但是多個頂點可以對應一個法線、顏色等屬性信息。

5.1.4 範例 簡易房屋

快速法線生成工具osgUtil::Smoothing Visitor

geometry:設置頂點setVertexArray

設置紋理坐標setTexCoordArray

     設置法線setNormalArray

PrimitiveSet表達圖元組的信息,DrawArrays和DrawElementsUInt索引

追加一個圖元組 addPrimitiveSet

     設置紋理圖getOrCreateStateSet()->setTextureAttributeAndModes

     設置顏色setColorArray 設置顏色綁定形式setColorBinding

圖元控制http://blog.csdn.net/sophistcxf/article/details/9096259

5.2幾何元素的繪制和訪問

三維渲染引擎設計與實踐(四)