我試圖創建一個使用一系列頂點,如企圖in this example (which I believe is wrong)和也談到on this forum頂點的立方體。我正在尋找的答案應該是這樣的:OpenGL中的三角形帶和矢量法線的多維數據集
1, 1, -1
-1, -1, -1,
1, 1, 1
...等等。我希望將其降至最少13個頂點(6面立方體= 12個三角形)。
這可能嗎?
我試圖創建一個使用一系列頂點,如企圖in this example (which I believe is wrong)和也談到on this forum頂點的立方體。我正在尋找的答案應該是這樣的:OpenGL中的三角形帶和矢量法線的多維數據集
1, 1, -1
-1, -1, -1,
1, 1, 1
...等等。我希望將其降至最少13個頂點(6面立方體= 12個三角形)。
這可能嗎?
有在減少三角形/四帶的頂點沒有什麼好處。讓每個人臉具有自己的頂點(對於像立方體這樣的銳邊網格)的一個優點是指定與每個頂點不同的法線的能力,如果想要具有正確的每像素點可能對您很重要採用鏡面反射照明。 (不管怎麼說,如果你不關心法線或任何東西:就純粹的效率而言,最好的做法是隻指定8個頂點並使用一個索引數組,這樣就可以使用頂點緩存,因此頂點緩存每個頂點着色器可能只運行一次,即使它被多個面使用)。
我能得到它低至17如果我理解正確的話
1: -1, 1, 1
2: 1, 1, 1
3: -1, -1, 1
4: 1, -1, 1
5: -1, -1, -1
6: 1, -1, -1
7: -1, 1, -1
8: 1, 1, -1
9: -1, 1, 1
10: 1, 1, 1
11: 1, -1, 1
12: 1, 1, -1
13: 1, -1, -1
14: -1, -1, -1
15: -1, 1, -1
16: -1, -1, 1
17: -1, 1, 1
這實現了正確的影響,但我認爲應該能夠用更少的頂點做到這一點。你認爲這有可能嗎?否則,它看起來像是一些三角形重疊,這會產生一些僞像:( – 2010-11-11 19:45:07
它需要14個頂點,前3個做一個三角形,然後每個額外的三角形使用一個額外的頂點(2 + num_triangles)。這是我怎麼做的:
v = ((-w, -h, d), # front-bottom-left 0
(w, -h, d), # front-bottom-right 1
(-w, h, d), # front-top-left 2
(w, h, d), # front-top-right 3
(-w, -h, -d), # back-bottom-left 4
(w, -h, -d), # back-bottom-right 5
(-w, h, -d), # back-top-left 6
(w, h, -d)) # back-top-right 7
strip_vertices = (v[7] + v[6] + v[3] + v[2] + v[0] + v[6] + v[4] +
v[7] + v[5] + v[3] + v[1] + v[0] + v[5] + v[4])
如前所述,這會導致問題與法線,所以我想我會在非帶格式重寫此。
當我使用CullMode.CullCounterClockwiseFace時,立方體會反轉,如何將立方體反轉爲正確的方式? – shinzou 2017-01-22 12:09:19
使用CullClockwiseFace,或通過更改頂點順序(也許只是反轉列表),以便它們按順時針方向繪製。請注意,OpenGL默認爲正面的逆時針方向,因此我選擇以逆時針順序繪製它們。 – 2017-01-23 10:43:39
http://www.cs.umd.edu/gvil/papers/av_ts.pdf – SAKrisT 2013-11-14 15:55:09