glDrawElements不绘制三角形
glDrawElements not drawing triangles
我试图创建一个OBJ解析器,读取文件并将顶点发送到opengl。我使用glDrawElements来绘制模型,但看起来它不是由三角形组成。您可以查看下面的代码,了解我是如何做到这一点的。代码片段只是一个示例。请注意索引计数是不同的模型我正在加载。
GLuint vbuffer;
glGenBuffers(1, &vbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vbuffer);
glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(GLfloat), vertices, GL_STATIC_DRAW);
glEnableVertexAttribArray(ff);
glVertexAttribPointer(ff, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, cbid);
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, 6 * sizeof(GLshort), indices, GL_STATIC_DRAW);
glDrawElements(GL_LINE_STRIP, 6, GL_UNSIGNED_SHORT, 0);
glDisableVertexAttribArray(0);
这是我得到的输出。图片链接
在这行代码中
glDrawElements(GL_LINE_STRIP, 6, GL_UNSIGNED_SHORT, 0);
你正在使用GL_LINE_STRIP,这不是你想要的,如果你的数据包含三角形。在这种情况下,你想要的是gl_三角形,它会给你预期的行为。
另外,我不知道这是否只是一个错字但是在你的glDrawElements调用中你传递GL_UNSIGNED_SHORT当初始化元素缓冲区时你传递sizeof(GLshort),而不是GLushort
相关文章:
- 绘制旋转的三角形
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?
- OpenGL绘制三角形而不是正方形
- 在 OpenGL 中使用三角形绘制字母?
- 为什么这个在 opengl 中绘制三角形的着色器没有多次运行
- 使用 glDrawArray 函数绘制三角形
- 三角形未绘制.C++/GLEW/SDL.
- GLFW程序不绘制三角形
- OpenGL不会绘制三角形,遵循确切的格式
- 使用 C++ 库 GLEW 在 openGl 中绘制一个红色三角形
- 用OpenGL绘制三角形
- 绘制三角形时只有空白屏幕
- OpenGL绘制三角形只有白色
- 使用 OpenGL 绘制基本三角形
- 计算机图形:我自己绘制三角形
- 如何使用OSG API在Osgearth上绘制三角形
- 理解在OpenGL 3.3+内核中使用三角形绘制四边形的代码
- OpenGL:使用退化三角形绘制线条