現代OpenGL怎麼繪製四邊形網格結構?
02-11
我有一些四邊形網格結構的模型數據,但是OpenGL好像並不支持繪製四邊形的模式。如果要用三角形網格來繪製也不是不可以,但是首先要修改數據的索引很麻煩,然後這就是一個三角形網格結構了和我要的結果不一樣啊。求解惑
就是要四邊形網格轉三角形網格,很簡單。
早期OpenGL是支持四邊形圖元的
GL_QUADS GL_QUAD_STRIP
不過現在四邊形圖元早已經deprecated
其實本人猜測之所以早期OpenGL會有四邊形圖元
是因為當時的3D硬體都還很少
但是2D硬體卻已經很成熟了
所以當時很多硬體支持2D Sprite的變形
所以當時想做3D遊戲
都會使用四邊形圖元
因為這可以利用當時的2D硬體來加速渲染
所以可想而知當時的模型數據基本都是使用了四邊形圖元的
早期OpenGL為了支持這些已有的模型數據
所以加入了四邊形圖元
四邊形圖元有非常明顯的缺點
因為空間中任意取四個頂點 並不一定在同一個平面上
如果不在同一平面上就分割成兩個三角形的話 有2種分割辦法
顯然不同的分割方法會產生不同的網格
所以很顯然不應該繼續使用四邊形網格
使用三角網格才是正確的做法
http://github.prideout.net/quad-meshes這篇博文里有個小技巧。用LINES_ADJACENCY傳index buffer,再在geometry shader中生成三角面。博客作者曾就職於NVIDIA和皮克斯。
推薦閱讀:
※在 OS X 下怎麼寫新版本的 OpenGL?
※為什麼 NVIDIA 的示例總是一條龍?
※ios的opengl究竟能不能在非主線程渲染?
※Shader 在現在圖形管線中可以負責多少部分?
※這款遊戲中 主角被遮擋部分變成半透明的效果是如何實現的?