Поскольку GLUT (который не является частью OpenGL в любом случае) рисует свои примитивы, используя немедленный режим glBegin/glEnd
и используя устаревшие встроенные атрибуты фиксированной функции, вы не сможете использовать этибольше, если вы хотите сконцентрироваться на устаревшей, современной функциональности ядра.
Вместо использования встроенных атрибутов (таких как glVertex
, glNormal
, ...) вы должны использовать свою собственную универсальную вершину.атрибуты (в сочетании с соответствующим вершинным шейдером, конечно) и вместо glBegin/glEnd
вызовов вы должны рисовать примитивы, используя массивы вершин, передаваемые VBO и рисуемые с использованием glDrawArrays/glDrawElements
и их производных.
Тогда как ничто не мешаетВы не можете хранить данные вершин для этих объектов в качестве переменных в исходном коде или генерировать их вручную, загружая их из файлов - это самый простой и общий способ, по крайней мере, для таких довольно сложных объектов, как чайник в Юте. Wavefront OBJ формат - это довольно простой формат файла сетки на основе ASCII, который довольно прост для чтения и может стать отправной точкой для изучения, поскольку его можно экспортировать практически любым программным обеспечением для моделирования.