三維渲染引擎設計與實踐(四)
五、繪制幾何對象和文字
幀緩存(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幾何元素的繪制和訪問
三維渲染引擎設計與實踐(四)