Пока я просматриваю все объекты, которые я хочу отобразить в своем 3D-движке, я получаю сообщение об ошибке при попытке вызвать
glDrawArrays(mesh->primitiveType, 0, mesh->vertexCount);
Так как он пытается прочитать из местоположения 0x0000000, то, очевидно, указатель, привязанный к индексу mesh- > vertexBuffer, указывает на ноль. Все это происходит в моем классе RenderableObject. Экземпляры этого класса привязаны к ним сеткой, и этот меш содержит индекс, который должен ссылаться на VertexArray. Но, видимо,
glBindBuffer(GL_ARRAY_BUFFER, mesh->vertexBuffer);
Не работает.
Странно, что он будет работать на моем Mac и других компьютерах с Windows, но он не будет работать на этом (Windows) компьютере. Поскольку я тестирую, я удалил все 3D-модели и нашел в нем примитивы, которые вызывают проблему, так как компилятор MSVС++ "оптимизировал" мой код, чтобы удалить все после
glGenBuffers(1, &CubeMesh.vertexBuffer);
И, наверное, почему ничего не получилось, или так я думал. Я отключил оптимизацию компоновщика/компилятора, и я мог видеть, что все точки разлома будут ударяться сейчас, но я все равно получаю одно и то же исключение, и я абсолютно не знаю, почему это не работает.
Весь источник проекта можно найти @https://github.com/Wrap/TwinGame/tree/master/src, насколько я могу судить, проблема в Primitives.cpp, и/или RenderableObject.cpp(в частности, файл RenderableObject:: Draw(); method). Я пытаюсь прочитать что-то, что защищено, что не так с LoadPrimitives(); метод?
Спасибо, что нашли время, чтобы прочитать это.