2008-11-12 2 views
7

Есть ли способ сделать OpenGL-преобразование общего вектора, который я даю ему с текущей матрицей просмотра модели и вернуть результат?OpenGL: несколько вектор пользователя по матрице модели?

Очевидный способ - запросить матрицу просмотра модели и сделать мультипликацию самостоятельно, но Я почти уверен, что должен быть способ заставить OpenGL сделать это для меня.

ответ

5

Вы правы, вам нужно получить матрицу модели и преобразовать вектор самостоятельно.

Для подтверждения см. this link в пункте 9.120.

4

Лучше всего делать расчет за пределами OpenGL. The Matrix and Quaternions FAQ - хороший ресурс для изучения того, как выполнять вычисления, если вы еще не знаете. Вы принести 4x4 модель-вид матрицы следующим образом

float modelview[16]; 
glGetFloatv(GL_MODELVIEW_MATRIX, modelview); 
0

Это, вероятно, лучше всего делать преобразования на стороне ЦП. Единственный другой способ, который я могу придумать, - использовать плюс вершинный шейдер, который делает только преобразования модели.

-1

Причина, по которой opengl, вероятно, не просто сделает это для вас, потому что вычисление не является частью конвейера рендеринга. и opengl (по большей части) выполняет только вычисления во время цикла отображения. Поэтому нет смысла предоставлять такие синхронные интерфейсы.