2010-12-13 46 views
3

J'ai une scène GL ES (1.1) ouverte avec de nombreux objets 3D et un modèle "player". J'aimerais que le lecteur ait la même taille de pixel, quelle que soit l'orientation de l'écran sur un téléphone Android ou un iPhone. Je suis pas en utilisant glOrtho ou des panneaux d'affichage. C'est une scène 3D en perspective, mais je veux juste que les objets aient la même taille dans l'orientation de l'écran. Actuellement, si je fais pivoter le téléphone, je garde le même rapport d'aspect mais la scène "zoome" en mode paysage. Je suppose que je dois jouer avec les paramètres de glFrustrum pour obtenir ceci; mais ne peut pas encore comprendre comment le faire. Donc, toutes les idées sont les bienvenues!OpenGL ES: obtenir une taille fixe pour un objet

Merci

Répondre

0

Vous aurez besoin de changer le rapport d'aspect lorsque l'appareil est sous tension pour passer d'une autre la taille des objets vont changer. Pensez à vous-même en regardant par la fenêtre, les objets de l'autre côté de la fenêtre ne seront de la même taille que si vous ne changez pas votre distance par rapport à la fenêtre (zooom dedans et dehors), quand vous "tournez" le côté de la fenêtre, le ratio d'aspect de la fenêtre change (la métaphore commence à ne pas fonctionner).

Si vous dessinez un carré dans la vue avec la longueur du côté étant le côté court de l'écran, vous devez toujours avoir un carré lorsque vous tournez le téléphone sur le côté, couvrant toujours la même zone sur l'écran.

Les choses seront probablement plus faciles à calculer si vous utilisez le code de gluPerspective. Vous réglez le rapport d'aspect sur le format d'image réel, fixez le fovy pour le premier format. Vous pouvez ensuite utiliser ce qui serait fovx pour ce rapport d'aspect comme fovy pour votre vue pivotée.