2008-11-12 8 views
7

¿Hay alguna manera de hacer que OpenGL se convierta en un vector general? Se lo doy con la matriz de modelos actuales y obtengo el resultado?OpenGL: ¿Múltiple vector de usuario por matriz de vista de modelo?

La manera obvia es consultar la matriz modelview y hacer la multiplicación yo mismo, pero Estoy casi seguro de que debería haber una manera de hacer que OpenGL haga esto por mí.

Respuesta

5

Tienes razón, tienes que obtener la matriz modelview y transformar el vector tú mismo.

Para una confirmación, vea this link en el párrafo 9.120.

4

Lo mejor es hacer el cálculo fuera de OpenGL. The Matrix and Quaternions FAQ es un buen recurso para aprender cómo realizar los cálculos si aún no lo sabe. Usted lo trae el modelo-vista matriz de 4x4 de la siguiente manera

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

Es probablemente el mejor para hacer las transformaciones en el lado de la CPU. La única otra forma en que puedo pensar es usar más un sombreador de vértices que solo hace las transformaciones de la vista de modelo.

-1

La razón por la que opengl probablemente no solo haga esto por usted es porque el cálculo no forma parte de la canalización de la representación. y opengl (en su mayor parte) solo realiza cálculos durante el ciclo de visualización. Por lo tanto, no tiene sentido proporcionar este tipo de interfaces síncronas.

Cuestiones relacionadas