【发布时间】:2015-07-30 12:08:36
【问题描述】:
如何使用 GL_LINE_STRIP 绘制多条线,但不能在这些线之间画一条额外的线,因为它会跳转到下一个值?看图
现在红线是图中线的实际值,而黄色线是因为它完成了 line1 的值并继续下一个但仍然在这些值之间画一条线。
我使用的代码是这样的:vector1 包含所有的行值。
glGenVertexArrays(1,&Vector1_VAObject);
glGenBuffers(1,&Vector1_VBObject);
glBindVertexArray(Vector1_VAObject);
glBindBuffer(GL_ARRAY_BUFFER, Vector1_VBObject);
glBufferData(GL_ARRAY_BUFFER,vector1.size()*sizeof(GLfloat), &vector1[0] ,GL_STATIC_DRAW);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE, 3*sizeof(GLfloat),(GLvoid*)0);
//Clean
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,0);
glBindVertexArray(0);
glUseProgram(lineShader->getProgram());
glBindVertexArray(Vector1_VAObject);
glDrawArrays(GL_LINE_STRIP,0,vector1.size());
glBindVertexArray(0);
所以我的问题是如何解决这个问题?所以它循环遍历向量,只绘制线的值,而不是在完成绘制第一行后跳转时。
【问题讨论】:
-
您是否尝试过生成多个顶点数组并将每个连续的线存储在一个单独的数组中?
-
是的,我有,但我认为我做错了什么,所以它没有工作,如果你有时间可以举个例子吗?
-
为什么不使用
GL_LINES而不是GL_LINE_STRIP?听起来您通过使用不适合您要呈现的内容的原始类型使事情变得比需要的复杂得多。
标签: c++ opengl vector gldrawarrays