在循环遍历我想在 3D 引擎中渲染的所有对象时,尝试调用时出现错误
glDrawArrays(mesh->primitiveType, 0, mesh->vertexCount);
因为它试图从位置 0x0000000 读取,所以显然绑定到 mesh->vertexBuffer 索引的指针指向零。这一切都发生在我的 RenderableObject 类中。这个类的实例有一个绑定到它们的网格,这个网格包含一个应该链接到 VertexArray 的索引。但显然
glBindBuffer(GL_ARRAY_BUFFER, mesh->vertexBuffer);
正在失败。
奇怪的是,它将在我的 Mac 和其他各种 Windows 计算机上运行 - 但它不会在这台(Windows)计算机上运行。因为我正在测试,所以我删除了所有 3D 模型,发现是导致问题的原语,MSVC++ 编译器以某种方式“优化”了我的代码,之后删除了所有内容
glGenBuffers(1, &CubeMesh.vertexBuffer);
这可能就是为什么没有任何东西被绑定,或者我是这么认为的。我禁用了链接器/编译器优化,我可以看到所有断点现在都会被命中 - 但我仍然遇到同样的异常,而且我完全不知道它为什么不起作用。
该项目的整个源代码可以在@https ://github.com/Wrap/TwinGame/tree/master/src找到,据我所知问题出在 Primitives.cpp 和/或 RenderableObject.cpp (特别是 RenderableObject::Draw(); 方法)文件。我是否试图阅读受保护的内容,LoadPrimitives() 有什么问题?方法?
感谢您抽时间阅读。