Я создаю анимацию в Maya продолжительностью в минуту и собираюсь визуализировать ее в OpenGL. Я делаю это как проект в колледже.
Сцена состоит только из человеческого лица с искаженными выражениями. Сетка имеет около 2200 четырехугольных граней.
Я нашел perl-скрипт, который конвертирует объектные файлы Wavefront в массивы вершин и нормалей. Я намереваюсь анимировать в Maya со скоростью 24 кадра в секунду, затем экспортировать сетку в каждом кадре в объектный файл Wavefront, а затем запускать все это через сценарий perl, который даст мне массивы вершин и нормалей.
Итак, чтобы проверить возможность, я преобразовал два кадра анимации в Maya в объектные файлы и прогнал их через сценарий (после его настройки), что дало мне тысячи вызовов glVertex
и glNormal
. Я скопировал все это в свою программу на C++ и скомпилировал. Он работает гладко.
Учитывая, насколько большой будет программа, когда я скопирую в нее операторы glVertex
и glNormal
длительностью 60 секунд*24 кадра, я хочу попробовать использовать VBO. Итак, я читал об этом, но я не совсем понимаю реализацию.
Итак, мой первый вопрос: как лучше всего реализовать VBO в этом случае?
Я думаю о 2D-массивах как для вершин, так и для нормалей, по одному для каждого кадра; и GL_STATIC_DRAW_ARB
для параметра "использование" файла glBufferDataARB()
.
Скажем, если моя анимация длится 5 кадров, моя сетка лица состоит из 2200 вершин и нормалей, то я создам:
GLfloat face_vertices[5][2200] = {.....};
GLfloat face_normals[5][2200] = {.....};
Мой второй вопрос: будет ли приведенный выше код работать или работать «хорошо» с VBO?
Кроме того, я не уверен, важна ли эта информация, но мой компьютер работает на графической карте Intel 82945G, и я почти уверен, что компьютеры в моем колледже также работают на Intel. Просто подумал, что упомяну об этом.
ОБНОВИТЬ
Производительность также вызывает беспокойство.