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.