glBufferData 失败,并显示: "Array object is not active."



编辑:好的,我可能发现了部分错误。我以为,所有 gl_debug_type_error 错误消息是停止执行的有效理由,这就是为什么如果我的调试消息回调设置为退出程序,则如果遇到 gl_debug_type_error 。。p>我只能忽略此错误,因为它只是严重性通知,然后继续,但是我仍然想知道此错误的含义以及如何预防。

====原始问题=====

运行相对简单的测试项目时,我会得到

GL_INVALID_OPERATION error generated. Array object is not active.

运行

glBufferData(GL_ARRAY_BUFFER, sizeof(mesh), mesh, GL_STATIC_DRAW);

据我所知,我不需要一个活动的VAO来设置VBO数据,仅适用于 vertexattribarray/pointer 调用。

但是,即使使用活动/绑定的VAO,也会丢弃相同的错误。

这是我的代码的简化版本:

float mesh[] =
{ -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5 };
{
program = glCreateProgram();
// Compile and attach shaders
...
glLinkProgram(program);
    // === Vertex Buffer ===
// Generate new buffer for vertex coordinates
glGenBuffers(1, &vb);
// Use for all ArrayBuffer operations
glBindBuffer(GL_ARRAY_BUFFER, vb);
// Runs until here. glCheckError() reports no error.
// DebugMessageCallback is also not triggered.
glBufferData(GL_ARRAY_BUFFER, sizeof(mesh), mesh, GL_STATIC_DRAW);
...
}

问题是,我的窗口管理器在仍在进行初始化时在单独的线程中调用Draw方法。为了解决此问题,我在Draw功能中添加了一个简单的Isitializatized检查。

最新更新