Мне потребовалось три дня, чтобы написать наконец отображение кубика. Не целых, конечно, а по паре часов вечером.
Были написаны классы MeshComponent
, MeshLoader
, VertexArray
. Для загрузки модели с расширение .obj
использовалась библиотека tinyobjloader.
Естсествеено были ошибки. Первая - забыл активировать шейдер перед передачей в него uniform переменных. Помогло в подозрительном месте сделать выод ошибок OpenGL.
Вторая - для кубика индексировал вершины не с нуля, а с единицы. Поэтому получался не совсем кубик. Помогло раскрышивать вершины в разные цвета и выводить по одному треугольнику.
Заключение
Теперь можно отобразить кубик, в также любую модель из .obj
файла. Только песочница работает с треугольниками, поэтому надо убедиться, что в файле содержаться данные только треугольников.
Ссылка на GitHub
TODO
Доделки, которыми в ближайшее время займусь:
Добавить логгирование не через SDL_Log, а через удобную бибилиотеку с уровнями логгирования
Сделать проверку на ошибки в OpenGL и добавить assert на них.