我已經創建了一個只包含三角形頂點的頂點緩衝區對象,用於使用GL_TRIANGLES選項進行繪製。我的VBO沒有顏色信息,因爲我改變每一幀的顏色。如何從頂點緩衝區對象中繪製單個三角形並設置其顏色?
現在我想要在每次迭代設置默認的頂點顏色這樣的後繪製在循環個體三角形:
glColor4f(red, green, blue, 1);
但我不知道如何執行實際的繪製。
如果我想從VBO中挑選一個或兩個三角形以用特定顏色繪製它們,我必須使用glDrawArrays
嗎?或者我必須使用glDrawElements
?
是否有更有效的方法來設置VBO中每個三角形的顏色然後繪製它?或者在每個幀的循環中調用glColor44
和glDrawArrays
都可以嗎?
太棒了!非常感謝!所以基本上,我會繼續創建一個結構數組,其中包含交錯的頂點顏色頂點顏色(...)數據,然後在每個幀中將glMapBufferOES + memcpy顏色添加到GPU中。對於每種顏色,每一幀,在循環中調用memcpy有多痛苦?這是交錯的數據交換嗎?否則,如果不交錯,我可以在每一幀都用一大塊顏色調用memcpy一次。你認爲什麼更好? – openfrog
@openfrog很難回答,因爲交錯可能會更好。但是你說得對,更新一大塊內存,而不是很多散佈的內存也許會更好。在這種情況下,您甚至可以將位置放在一個VBO中,並將顏色放在另一個VBO中,這樣您就可以更新整個顏色的VBO,這對於更新零件而言又具有一些性能優勢(如果正確)。我想,它需要進行測試。 –
使用兩個VBO是有道理的。這是否需要使用索引? – openfrog