現代OpenGL怎麼繪製四邊形網格結構?

我有一些四邊形網格結構的模型數據,但是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 在現在圖形管線中可以負責多少部分?
這款遊戲中 主角被遮擋部分變成半透明的效果是如何實現的?

TAG:OpenGL | C | 計算機圖形學 |