2010-11-12 75 views
1

我想所示使用一堆多邊形的貝殼的模型,例如:link text模型在OpenGL

但我是新來的OpenGL。我將如何開始建模,這個過程會是什麼樣子?

回答

3

我假設你要生成幾何而不是「雕刻它」。

您需要做的就是像在數學示例中一樣生成幾何圖形,並將其存儲在vertex buffer objects(VBO)中。有多種方法可以做到這一點,但通常您需要將頂點信息(位置,常規,紋理座標,如果有的話)存儲在一個緩衝區中,以及這些頂點在另一個(稱爲索引數組)中被分組爲面部的方式。

然後,您可以綁定這些緩衝區並通過一次調用glDrawElements()來繪製它們。

要小心,面的頂點都是在相同的順序(逆時針或順時針)和繞組順序正確指定給OpenGL,否則你會得到你的殼!

在OpenGL 1.4及更高版本中支持VBOs。在極少數情況下,您的目標平臺不支持(首先更新您的驅動程序!),您可以使用Vertex Arrays。他們做的事情幾乎是一樣的,但是他們在每一幀都通過總線發送時速度較慢。

-1

儘管在程序上建模對象(即在座標中以數字形式生成座標)對於學習目的可能沒有問題,但它絕對不是您想要做的事情,因爲如果您的任何東西比幾個三角形更復雜,它變得非常不切實際或者一個cyllinder)。有些人認爲程序一代是一門藝術,但是你需要大量的練習才能用這種方法取得好看的(更不用說現實的)結果。

如果你想顯示一個更復雜,逼真的模型,採取的辦法是:

  • 創建的建模工具模型(如自由和強大的Blender
  • 將它保存到一個文件在給定的格式,
  • 在你的程序中,從文件加載對象到存儲器(要麼您的RAM使用頂點數組或您GPU存儲器以顯示直接使用頂點緩存對象)並顯示它。

通用格式(雖然老不方便的一個)是.obj(波前OBJ),攪拌機能夠保存到這一點,你很可能給谷歌一個OpenGL OBJ裝載機(或者你可以滾你自己 - untrivial,但仍然很容易)。

另一種方法是爲Blender創建一個導出腳本(非常簡單,如果你知道Python)並將該模型保存爲包含頂點等的簡單二進制文件;然後很容易地將它加載到應用程序代碼中。