2008-11-12 9 views
7

Existe-t-il un moyen de transformer OpenGL en un vecteur général que je lui donne avec la matrice modelview actuelle et de récupérer le résultat?OpenGL: vecteur d'utilisateur multiple par matrice modelview?

La manière évidente est d'interroger la matrice modelview et de faire la multiplication moi-même mais Je suis presque sûr qu'il devrait y avoir un moyen de faire OpenGL faire cela pour moi.

Répondre

5

Vous avez raison, vous devez obtenir la matrice modelview et transformer le vecteur vous-même.

Pour une confirmation, voir this link au paragraphe 9.120.

4

Il est préférable de faire le calcul en dehors d'OpenGL. The Matrix and Quaternions FAQ est une bonne ressource pour apprendre comment effectuer les calculs si vous ne le savez pas déjà. Vous allez chercher la matrice modèle-vue 4x4 comme suit

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

Il est probablement préférable de faire les transformations du côté du CPU. La seule autre façon que je peux penser est d'utiliser plus un vertex shader qui ne fait que les transformations modelview.

-1

La raison pour laquelle opengl ne le fera probablement pas pour vous est que le calcul ne fait pas partie du pipeline de rendu. et opengl (pour la plupart) n'effectue que des calculs pendant la boucle d'affichage. Il n'est donc pas logique de fournir ce type d'interfaces synchrones.

Questions connexes