C++ glDrawElements 数组作为参数EXC_BAD_ACCESS错误

C++ glDrawElements Array as Parameter EXC_BAD_ACCESS Error

本文关键字:BAD ACCESS 错误 EXC 参数 glDrawElements 数组 C++      更新时间:2023-10-16

我在glDrawElements调用时遇到EXC_BAD_ACCESS错误。我认为传递给 Shape 构造函数的数组有问题。这里可能有什么问题。

主.cpp

static const GLfloat cube_vertices[] = {
   -1.0, -1.0,  1.0,
   1.0, -1.0,  1.0,
   -1.0,  1.0,  1.0,
   1.0,  1.0,  1.0,
   -1.0, -1.0, -1.0,
   1.0, -1.0, -1.0,
   -1.0,  1.0, -1.0,
   1.0,  1.0, -1.0,
};
static const GLushort indices[] = {
    0, 1, 2, 3, 7, 1, 5, 4, 7, 6, 2, 4, 0, 1
};
cube = new Shape(shader, cube_vertices, 3 * 8, indices, 14);

形状.h

const GLushort *indices;

形状.cpp

Shape::Shape(Shader* cshader, const GLfloat *vertices, int size, const GLushort *cindices, int indSize) :  {
indices = cindices;
}

呈现方法

glDrawElements(GL_TRIANGLES, 14, GL_UNSIGNED_SHORT, indices);

正如我所说,这就是问题所在。我做错了什么?谢谢。

如果要传递GL_TRIANGLES则索引缓冲区长度应为 3 的倍数(即每 3 个索引值形成一个三角形)。

除此之外,您发布的内容看起来还可以 - 因此我们需要一个更完整的测试用例才能提供帮助。