gpt4 book ai didi

c++ - glBufferData() 的段错误

转载 作者:太空狗 更新时间:2023-10-29 21:06:42 31 4
gpt4 key购买 nike

我不明白为什么这段代码会出现段错误:

AxesMarker::AxesMarker(float size)
: size_(size), vbo_vertices_(0), vbo_elements_(0)
{
Vertex vertices[6] = {
Vertex(Color4f::RED, Vector3f::ZERO, Vector3f::ZERO),
Vertex(Color4f::RED, Vector3f::ZERO, Vector3f(size_, 0.0f, 0.0f)),
Vertex(Color4f::BLUE, Vector3f::ZERO, Vector3f::ZERO),
Vertex(Color4f::BLUE, Vector3f::ZERO, Vector3f(0.0f, size_, 0.0f)),
Vertex(Color4f::GREEN, Vector3f::ZERO, Vector3f::ZERO),
Vertex(Color4f::GREEN, Vector3f::ZERO, Vector3f(0.0f, size_, 0.0f)) };

GLuint elements[6] = { 0, 1, 2, 3, 4, 5 };

fprintf(stderr, "sizeof(vertices): %d, sizeof(Vertex): %d", (int) sizeof(vertices), (int) sizeof(Vertex));

/* create buffers */
glGenBuffers(1, &vbo_vertices_);
glGenBuffers(1, &vbo_elements_);

/* bind buffers */
glBindBuffer(GL_ARRAY_BUFFER, vbo_vertices_);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo_elements_);

/* buffer data */
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW);

/* unbind buffers */
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}

编译时没有警告,但在第一次调用 glBufferData() 时似乎出现段错误。如有必要,我可以发布更多代码,我对 GL 不够熟悉,不知道什么可能是相关的。谢谢!


  GLfloat vertices[60] = { 
1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f };

产生相同的段错误。

最佳答案

您的 Vertex 类是普通的旧数据类型吗?它是否有任何可能意味着它也有一个 vtable 的虚函数?您能否尝试使用普通 float 组重写此代码(只是为了测试您对 glBufferData 的调用是否有效)。据我所知,您似乎正确使用了 glBufferData,但我可能又漏掉了一些东西。

编辑:在调用此代码之前,您是否绝对确定您的 OpenGL 上下文已完全初始化。这是一个全局对象吗,因为它的构造函数可能在 main 之前被调用?

关于c++ - glBufferData() 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7054772/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com