Partager via


Fonctions de transformation et de matrice de portage

IRIS GL et OpenGL gèrent les matrices et les transformations de manière similaire. Toutefois, il existe plusieurs différences à garder à l’esprit lors du portage du code à partir de IRIS GL :

  • Dans OpenGL, vous êtes toujours en mode double matrice ; il n’existe aucun mode à matrice unique.

  • Les angles sont mesurés en degrés, au lieu de dixièmes de degrés.

  • Les appels de matrice de projection, comme glFrustum et glOrtho, se multiplient maintenant sur la matrice actuelle, au lieu d’être chargés sur la matrice actuelle.

  • La fonction OpenGL, glRotate, est très différente de faire pivoter. Vous pouvez faire pivoter autour de n’importe quel axe arbitraire, au lieu d’être limité aux axes x, y et z. Par exemple, vous pouvez traduire :

    rotate(200*(i+1), 'z');
    

    À:

    glRotate(.1*(200*(i+1), 0.0, 0.0, 1.0);
    

    Lors de la traduction de faire pivoter vers glRotate vous basculez vers des degrés de dixièmes de degrés et remplacez « z » par un vecteur pour l’axe z.

  • OpenGL n’a pas d’équivalent à la fonction polarview. Vous pouvez le remplacer facilement par une traduction et trois rotations. Par exemple, vous pouvez traduire :

    polarview(distance, azimuth, incidence, twist);
    
    

    À:

    glTranslatef( 0.0, 0.0, -distance); 
    glRotatef( -twist * 10.0, 0.0, 0.0, 1.0); 
    glRotatef( -incidence * 10.0, 1.0, 0.0, 0.0); 
    glRotatef( -azimuth * 10.0, 0.0, 0.0, 1.0);
    

Le tableau suivant répertorie les fonctions de matrice OpenGL et leurs fonctions IRIS GL équivalentes.

IRIS GL, fonction OpenGL, fonction Signification
mmode glMatrixMode Définit le mode matrice actuel.
glLoadIdentity Remplace la matrice actuelle par la matrice d’identité.
loadmatrix glLoadMatrixf,glLoadMatrixd
Remplace la matrice actuelle par la matrice spécifiée.
multmatrix glMultMatrixf,glMultMatrixd
Post-multiplie la matrice actuelle avec la matrice spécifiée (notez que multmatrix prédéfini).
mapw, mapw2 gluUnProject Projets coordonnées d’espace mondial vers l’espace objet (voir également gluProject).
ortho glOrtho Multiplie la matrice actuelle par une matrice de projection orthographique.
ortho2 gluOrtho2D Définit une matrice de projection orthographique à deux dimensions.
perspective gluPerspective Définit une matrice de projection de perspective.
choisir gluPickMatrix Définit une région de sélection.
popmatrix glPopMatrix Affiche la pile de matrices actuelles, en remplaçant la matrice actuelle par celle ci-dessous.
pushmatrix glPushMatrix Envoie la pile de matrices actuelles vers le bas d’un, en dupliquant la matrice actuelle.
faire pivoter
glRotated,glRotatef
Fait pivoter le système de coordonnées actuel par l’angle donné sur le vecteur de l’origine à travers le point donné. Notez que faire pivoter pivoté uniquement sur les axes x, y et z.
mise à l’échelle glScaled,glScalef
Multiplie la matrice actuelle par une matrice de mise à l’échelle.
traduire glTranslatef,glTranslated
Déplace l’origine du système de coordonnées vers le point spécifié, en multipliant la matrice actuelle par une matrice de traduction.
fenêtre glFrustum Les coordonnées données pour les plans de découpage, multiplient la matrice actuelle par une matrice de perspective.

OpenGL a trois modes de matrice, qui sont définis avec glMatrixMode. Le tableau suivant répertorie les modes disponibles en tant que paramètres pour glMatrixMode.

Mode matrice IRIS GL Mode OpenGL Signification Profondeur de pile minimale
MTEXTURE GL_TEXTURE Fonctionne sur la pile de matrice de texture. 2
MVIEWING GL_MODELVIEW Fonctionne sur la pile de matrices de vue de modèle. 32
MPROJECTION GL_PROJECTION Fonctionne sur la pile de matrices de projection. 2