Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Jeux vidéo de type bac à sable
26 avril 2013

CodeMoe : remplacer gluperspective en OpenGL

Bonjour,

un tout petit post avant mes vacances (où j'ai l'intentention de ne pas allumer ma machine mais bon y arriverai-je? :-p)

Aujourd'hui un petit bout de code concernant gluPerspective.

Dans le plupart des tutoriaux lorsqu'il s'agit de mettre un place une vision on utilise cette petite métode:

gluPerspective( 45.0f, sceneBounds.size.width / sceneBounds.size.height,0.1f, 300.0f );

Avec un angle de vision à 45° un aspect calculé avec le ratio de l'écran et une vision comprise entre 0.1 et 300.

Mon petit problème est qu'XCode n'aime pas trop cette méthode et déclare systématiquement:

implicit declaration of function 'gluPerspective' is invalid in c99

Bon il y avait une façon simple de le corriger qui était de simplement inclure glu.h

#import <OPENGL/glu.h>

Mais avant de penser simple il m'arrive penser compliqué et j'ai donc réécrit (avec un peu d'aide de google la fonction). Il faut savoir que glPerspective appelle systématiquement glFrustrum.

-(void) setPerspective:(GLdouble) fovy aspect:(GLdouble) aspect zNear:(GLdouble) zNear zFar:(GLdouble) zFar
{
    const double pi180 = 0.017453292519943295769236907684886;
    // pi/180
    GLdouble top, bottom, left, right;
    top = zNear * tan(pi180*fovy/2);
    bottom = -top;
    right = aspect*top;
    left = -right;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(left, right, bottom, top, zNear, zFar);
    glMatrixMode(GL_MODELVIEW);
}

Globalement on donne à frustrum la taille du rectangle du plan de projection (Il y a pas mal de site qui expliquent les notions mathématiques liées à tout cela dont par exemple celui ci)

Bon tout cela est un peu du pinaillage mais je le trouve néanmoins utile à la compréhension du système de projection.

Sur ce je vous dis à bientôt.

Publicité
Publicité
Commentaires
Jeux vidéo de type bac à sable
Publicité
Publicité