2012-11-17 91 views
1

我在做OpenGL程序,我需要創建一個用戶定義的維度四邊形網格。使用頂點陣列,四個陣列來創建四邊形網格

從我目前瞭解的情況來看,我使用頂點數組來繪製實際上將形成四邊形網格的四邊形。這是非常簡單的概念,但我很難理解它。

所以,請糾正我,如果我不正確的理解。

所以,如果用戶想要做4x4網格,將有16個四邊形一起和64個頂點放置它們。 因此,當用戶定義網格的分辨率(哦,順便說一下,邊界大小已經在開始給出),我創建了這64個頂點。

我到目前爲止是否正確?

我將與這些四邊形進行交互並重新塑造它們,形成一個山有點形狀。

當然,我會需要更大的分辨率,可能32x32甚至更大,以正確顯示這樣的事情。

+0

這些四邊形是否構成一個大四邊形? EG,2x2看起來像是一個四方法院嗎? – GraphicsMuncher

回答

0

如果我正確地理解了你,你想製作一個四邊形網格,然後創建一個大四邊形。

這將是這個樣子的4×4

_ _ _ _ 
|_|_|_|_| 
|_|_|_|_| 
|_|_|_|_| 
|_|_|_|_| 

在這種情況下,你只需要(4 + 1)×(4 + 1)的頂點,所以25米的頂點。您可以指定每個四元組的四個頂點,但除了不需要網格(以及浪費內存和速度)之外,它可能最終難以添加「山」功能(類似於我的地形猜測)。如果您在網格中間移動一個頂點,您可能希望它移動使用該頂點的所有四個四邊形。如果您有四邊形分享頂點(就像它們在網格中一樣),移動一個點將會改變使用該點的所有四邊形。

基本上,指定所有獨特的頂點並將它們連接爲四邊形。冗餘是最好的避免。另外,如果你正在學習OpenGL,確保你沒有學習固定功能管道(如果你有一個glBegin()glVertex3f()那裏,你正在使用固定功能管道)。你不應該使用它的原因有很多(它已經有幾十年了,速度較慢,幾乎沒有變化),但最大的原因可能是如果你想要製作真實的圖形,這是浪費時間。你必須學習如何使用可編程管線,並且具有固定功能的管道習慣以及頭腦中的思維方式只會讓它變得比以前更難。

+0

非常感謝您的幫助!我剛開始研究它,它引導我走向正確的方向!我使用舊功能作爲第一次分岐,只是繪製細分曲線並與它們一起玩 - 轉換,旋轉那種東西。這對我來說非常具有挑戰性,但我非常積極,我能做到! – user1830954

+0

所以頂點數組將只是頂點[] = {0,3,...}?是否足以容納我的網格的所有頂點?要求是32x32或64x64,我正在丟棄一個blobbly對象,並使用高斯blob和平滑陰影來定位它們。 – user1830954

+0

不要靜態定義它們(工作太多!) - 根據四維的尺寸生成它們。 (0,0),(1,0),(2,0)...(0,1),(1,1),(2,1)...(n, N)。然後,您可以通過索引將每個四邊形的頂點定義到該數組中,您也應該生成這些頂點。 「 – GraphicsMuncher