我已经尝试了一段时间,但是我失败了。 我需要绘制一个立方体,然后在其周围添加边框。 多维数据集可以正常工作,并且可以绘制边框,但始终会插入额外的线条。我使用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位置)。 但是,当我不为多维数据集设置顶点时,它就会消失。 任何想法为什么会发生这种情况? 感谢您提供的所有帮助。

===============>>#1 票数:0 已采纳

额外的行在调用显示函数时是缓冲区的索引错误。 基本上,它尝试显示颜色数据而不是实际的顶点数据。

  ask by Sefu translate from so

未解决问题?本站智能推荐: