我一直在试图弄清楚这一点,但是我失败了。我需要绘制一个立方体,然后在它周围添加一个边框。立方体工作正常,我得到了边框绘制,但总是有一条额外的线条插入。我使用GL_ARRAY_BUFFER存储数据并从GL_TRIANGLES(绘制立方体本身)切换到GL_LINES(绘制轮廓边框)。缓冲区中的每个偏移量都有自己的一组顶点。OpenGL - 当我在立方体上绘制边框时出现额外的线条
我对显示功能(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个顶点)以覆盖所有边缘。立方体和边缘位于屏幕中央(坐标为0,0,0)。即使我禁用在显示功能中绘制立方体,额外的不需要的线(似乎从中央左侧3D位置延伸到中央前方3D位置)也会进入。但是,当我没有为立方体设置顶点时,它会消失。任何想法,为什么这可能会发生?感谢任何和所有的帮助。
那么'points'和'points2'包含什么,'cubeLen'和'sidesLen'的值是什么? –