我已经尝试了一段时间,但是我失败了。 我需要绘制一个立方体,然后在其周围添加边框。 多维数据集可以正常工作,并且可以绘制边框,但始终会插入额外的线条。我使用GL_ARRAY_BUFFER存储数据,并从GL_TRIANGLES(绘制多维数据集本身)切换到GL_LINES(绘制轮廓边框)。 缓冲区中的每个偏移量都有自己的一组顶点。
我的显示功能代码(GLUT):
// cubeLen = number of cube's vertices in buffer
// sidesLen = number of side vertices in buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDrawArrays(GL_TRIANGLES, 0, cubeLen);
glDrawArrays(GL_LINES, cubeLen, cubeLen + sidesLen);
glutSwapBuffers();
我的代码来设置缓冲区:
GLuint buffer;
glGenBuffers( 1, &buffer );
glBindBuffer( GL_ARRAY_BUFFER, buffer );
glBufferData( GL_ARRAY_BUFFER, sizeof(points) + sizeof(colors)
+ sizeof(points2) + sizeof(colors2),
NULL, GL_STATIC_DRAW );
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(points), points);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points), sizeof(colors), colors);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points) + sizeof(colors),
sizeof(points2), points2);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points) + sizeof(colors) + sizeof(points2),
sizeof(colors2), colors2);
我对立方体的每一侧使用12个三角形(每个3个顶点),并使用12条线(24个顶点)覆盖所有边缘。 立方体和边缘以sycn的形式位于屏幕的中心(以0,0,0为中心)。 即使我在显示功能中禁用绘制立方体,也会出现多余的多余线条(似乎从左中3D位置延伸到中前3D位置)。 但是,当我不为多维数据集设置顶点时,它就会消失。 任何想法为什么会发生这种情况? 感谢您提供的所有帮助。