OpenGL: многопользовательский вектор по матрице вида модели? - PullRequest
7 голосов
/ 12 ноября 2008

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

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

Ответы [ 4 ]

5 голосов
/ 12 ноября 2008

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

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

4 голосов
/ 12 ноября 2008

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

float modelview[16];
glGetFloatv(GL_MODELVIEW_MATRIX, modelview);
0 голосов
/ 13 ноября 2008

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

0 голосов
/ 13 ноября 2008

Вероятно, лучше всего выполнить преобразования на стороне процессора. Единственный другой способ, который я могу придумать, это использовать EXT_transform_feedback плюс вершинный шейдер, который выполняет только преобразования модели.

...