Définir le zoom du Camera sous OpenGL ES
Par Xavier Gouchet le lundi 27 juillet 2009, 16:03 - Developpement - Lien permanent
Bon allez, un petit écart de conduite, je vais ici faire du code, du vrai, parce que j'ai pas mal cherché sur le sujet et les réponses sont pas forcément simple à trouver quand on n'a jamais fait d'OpenGL. Comme je le disais précédemment, je travaille sur un moteur 3D OpenGL sur Android. Mais sous Android, on n'utilise pas OpenGL de base mais OpenGL ES (OpenGL for Embedded Systems), qui ne contient pas autant de fonctions que la version standard.
Et notamment l'un des manque et qu'il n'y a pas de fonction gluPerspective, qui permet de spécifier l'angle de vue, et donc le zoom de la camera. Je ne me suis pas encore penché à fond sur le fonctionnement des matrices caméras, et je me sentais mal refaire les maths dans mon coin, j'ai donc cherché une autre astuce, que j'ai trouvé sur un forum iPhone. La formule, je la met pour ceux que cela peut intéresser, et surtout pour en avoir une trace quelque part ;).
void perspective(double fov, double aspectRatio, double zNear, double zFar) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double yTop = zNear * tan(fovy * M_PI / 360.0);
double yBottom = -yTop;
double xLeft = yBottom * aspectRatio;
double xRight = yTop * aspectRatio;
glFrustumf(xLeft, xRight, yBottom, yTop, zNear, zFar);
glMatrixMode(GL_MODELVIEW);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
Voila et désolé pour tous ceux qui ne sont pas programmeur parmi mes lecteurs, promis je ne le ferait plus... enfin pas tout de suite
Caméra - Merveilleux instrument de tourisme auquel le voyageur fait voir le pays avant de le voir lui-même.Pierre Daninos


Partagez cet article :




Commentaires
salut
ou alors tu fais un :
GLU.gluPerspective(gl, fovy, aspect, near, far);
sans oublier d'importer :
import android.opengl.GLU;
bon courrage
C'est bien, et la prochaine étape c'est les frustums asymetriques
Merci pour l'info ludo, je savais pas qu'on pouvais importer GLU sous android. ^^