2013-05-05 127 views
2

好吧,這已經讓我瘋狂了4天了。我沒有生成頂點/點的問題,但是如何以合理高效/優雅的方式製作封閉的多邊形或線框?從頂點繪製3D多邊形(OpenGL/C++)

另一個問題是如何存儲頂點?我應該以什麼順序存儲3D對象的頂點?我真的不能再想了,我在網上尋找解決方案,但找不到任何解決方案。

我想到的是將頂點存儲在二維數組中,水平(x和z)邊緣循環爲行,垂直(y)爲列,但我懷疑這是一個很好的方法來做到這一點。

+0

立即模式如何:'glBegin(GL_POLYGON); glVertex(一); glVertex(b)中; glVertex(C); glEnd();'? – 2013-05-05 17:41:14

+0

你應該添加一些細節。你嘗試了什麼,什麼不起作用?或者你爲什麼不覺得它夠優雅?我沒有看到,即使這四天中只有一天用google搜索也沒有幫助你。 – 2013-05-06 17:43:01

+0

重要的是,爲什麼downvotes?而我並沒有要求使用什麼代碼。我要求提供算法或方法的提示。但沒關係,我想我有一個想法。 – Valentin 2013-05-07 15:16:16

回答

1

創建一維頂點數組,並按照您喜歡的順序放置它們(儘管對於性能來說,更好地將它們排序爲條狀示例......)。創建一個索引數組(例如一個短陣列),索引數組中的每個元素應該指向頂點數組頂點的索引。將它們構建爲一維數組的原因在於,這是OpenGL內部處理事物的方式。

如果你的問題是你沒有一個元素數組,而只是一組你想繪製的網格點,你首先需要生成這樣的數組。首先了解三角形拓撲的基本知識:http://gamma.cs.unc.edu/COMP770/LECTURES/11trimesh.pdf,然後想辦法從一組點生成網格。

+1

第二個鏈接似乎很方便,謝謝。 – Valentin 2013-05-07 15:19:32

+0

不客氣! – Trax 2013-05-07 15:22:13

1

當涉及到三維頂點時,沒有標準的順序。您可以訂購它們,無論您喜歡或適合您與他們合作的方式。