gpt4 book ai didi

c++ - 具有不同形状的 OpenGL glDrawArrays

转载 作者:行者123 更新时间:2023-11-30 04:55:34 26 4
gpt4 key购买 nike

对于一项作业,我需要编写一个程序,在第一次单击时绘制一个点,在第二次单击时绘制一条线,在第三次单击时绘制三角形。所有这些都是在 OpenGL 中完成的。

我不需要任何代码,但由于我对所有这些都是全新的,所以我很难理解如何使用 glDrawArrays() 将其发送到 GPU,因为该函数接受 模式。我知道我想继续将点附加到数组中 - 但随着模式不断变化(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

假设您不断向顶点缓冲区的末尾添加新点,这将绘制到目前为止创建的所有三角形,以及最近尚未形成的完整三角形的任何单个点或线。

关于c++ - 具有不同形状的 OpenGL glDrawArrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52959633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com