2010-05-17 7 views
5

Dans mon application iPhone, j'ai besoin de projeter une scène 3D dans les coordonnées 2D de l'écran pour certains calculs. Mes objets passent par différentes rotations, traductions et mises à l'échelle. J'ai donc pensé que je devais d'abord multiplier les sommets avec la matrice ModelView, puis j'ai besoin de la multiplier avec la matrice de projection orthogonale.OpenGL ES 2.0 équivalent de glOrtho()?

Tout d'abord suis-je sur la bonne voie?

J'ai la matrice de vue modèle, mais j'ai besoin de la matrice de projection. Existe-t-il un équivalent glOrtho() en ES 2.0?

Répondre

13
mat4 projectionMatrix = mat4(2.0/768.0, 0.0, 0.0, -1.0, 
           0.0, 2.0/1024.0, 0.0, -1.0, 
           0.0, 0.0, -1.0, 0.0, 
           0.0, 0.0, 0.0, 1.0);       

gl_Position = position; 
gl_Position *= rotationMatrix; 
gl_Position.x -= translateX; 
gl_Position.y -= translateY; 
gl_Position *= projectionMatrix; 

Pour une résolution fixe (1024x768 dans mon cas pour l'iPad) J'ai utilisé cette matrice et tout fonctionne comme un charme :) Voici la description complète ce que vous avez besoin de mettre les valeurs que dans votre matrice: glOrtho.html

+0

merci mec c'est un exemple très utile – sage444

3

Le manual page pour glOrtho() décrit les opérations équivalentes, aussi longtemps que vous avez la matrice à portée de main devrait être en mesure de le ré-implémenter.

+1

404 page introuvable – Nande

+1

@Nande Merci, fixe! – unwind