[英]OpenGL glDrawArrays with different shapes
對於作業,我需要編寫一個程序,第一次單擊時將繪制一個點,第二次單擊時將繪制一條線,第三次單擊時將繪制三角形。 所有這些都是在 OpenGL 中完成的。
我不需要任何代碼,但由於我對所有這些都是全新的,我很難理解如何使用 glDrawArrays() 將其發送到 GPU,因為該函數采用mode
。 我知道我想繼續將點附加到數組 - 但隨着模式不斷變化(GL_POINTS、GL_LINE_LOOP、GL_TRIANGLES),我不知道如何存儲它。
任何和所有概念上的幫助都將不勝感激。
你說你不想要代碼,但老實說,我可以嘗試用很多詞來做一個蓬松的解釋,或者我可以用代碼簡潔地解釋它。
假設您的頂點緩沖區中有N個頂點。 看起來你想要這樣的東西:
int num_extra_verts = N % 3;
int num_tri_verts = N - num_extra_verts;
// Draw triangles
if (num_tri_verts > 0)
glDrawArrays(GL_TRIANGLES, 0, num_tri_verts);
// Draw point or line
if (num_extra_verts == 1)
glDrawArrays(GL_POINTS, num_tri_verts, 1);
else if (num_extra_verts == 2)
glDrawArrays(GL_LINES, num_tri_verts, 2); // GL_LINE_LOOP not needed for single line
如果您不斷向頂點緩沖區的末尾添加新點,這將繪制迄今為止創建的所有三角形,以及最近尚未完整三角形的任何單個點或線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.