簡體   English   中英

具有不同形狀的 OpenGL glDrawArrays

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM