OpenGL-图元装配
生活随笔
收集整理的這篇文章主要介紹了
OpenGL-图元装配
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是圖元裝配
在繪制階段,將頂點傳入著色器后,這些頂點通過不同的連接方式會形成不同的顯示效果,這時候就需要用到圖元裝配方式來確定最終顯示出來的效果。OpenGL中一共提供了10種圖元裝配方式,平時開發中使用最多的方式為GL_TRIANGLE_FAN。
圖元裝配種類和效果
| GL_POINTS | 點。所有頂點不連接,直接以點的形式顯示。 |
| GL_LINES | 線。每兩個頂點相連接,每個頂點不復用,形成多條線。 |
| GL_LINE_STRIP | 線帶。每兩個頂點相連接,除首、尾頂點外的其他頂點復用,形成不閉合的線帶。 |
| GL_LINE_LOOP | 線環。每兩個頂點相連接,所有頂點可復用,形成閉合的線環。 |
| GL_POLYGON | 多邊形。所有頂點相連接,形成凸多邊形。 |
| GL_TRIANGLES | 三角形。每三個頂點相連接,頂點不復用,形成三角形。 |
| GL_TRIANGLE_STRIP | 三角形帶。每三個頂點相連接,頂點復用,形成三角形帶。 |
| GL_TRIANGLE_FAN | 三角形扇。以某個頂點作為公用頂點,和其他相鄰的兩個頂點相連接,組合成多個相鄰的三角形,形成三角形扇。 |
| GL_QUADS | 四邊形。每四個頂點相連接,頂點不復用,形成四邊形。 |
| GL_QUAD_STRIP | 四邊形帶。每四個頂點相連接,頂點復用,形成四邊形帶。 |
代碼使用
Begin(GLenum primitive, GLuint nVerts, GLuint nTextureUnits = 0)通過GLBatch對象調用Begin函數設置圖元裝配方式。參數primitive為圖元裝配方式;參數nVerts為頂點個數。參數nTextureUnits為紋理坐標,可選。例如圖中GL_POINTS顯示效果的代碼為:
GLfloat vertexs[18] = {1, -1, 0,-1, -1, 0,-2, 0, 0,-1, 1, 0,1, 1, 0,2, 0, 0};pointBatch.Begin(GL_POINTS, 18);pointBatch.CopyVertexData3f(vertexs);pointBatch.End();注意
- 當頂點數量和圖元裝配不匹配時,顯示效果會錯亂。比如圖元裝配設置為GL_QUADS,但頂點只有6個,這時候頂點不夠用,就只會顯示一個四邊形,另外兩個頂點顯示不出來。
- 頂點順序不同,顯示效果也不相同。
- 填充顏色為圖案的顏色。上圖中GL_LINE_LOOP和GL_POLYGON看起來連接方式似乎是一樣的,但其實GL_LINE_LOOP的填充顏色是線的顏色;GL_POLYGON的填充顏色是內部封閉空間的顏色。
總結
以上是生活随笔為你收集整理的OpenGL-图元装配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019年8月10日工作总结
- 下一篇: base64图片在各种浏览器的兼容性处理