IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Problème d'affichage avec les lumières


Sujet :

OpenGL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 58
    Points : 40
    Points
    40
    Par défaut Problème d'affichage avec les lumières
    Voila, je suis en train de réaliser un programme avec OpenGL en C++ et je recontre certains problèmes avec l'eclairage, c'est certainement une connerie mais la je seche
    Voici un code fonctionnel qui montre bien le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    int main(int argc, char** argv)
    {
        SDL_Surface* screen_surface;
        int screen_width = 640;
        int screen_height = 480;
        int screen_depth = 32;
        if (SDL_Init(SDL_INIT_VIDEO) < 0)
    	{
    		cout << "Impossible to initialize SDL Video." << endl;
    		return false;
    	}
    	atexit(SDL_Quit);
     
    	if ((screen_surface = SDL_SetVideoMode(screen_width, screen_height, screen_depth, SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWSURFACE)) == NULL)
    	{
    		cout << "Impossible to set video mode (" << screen_width << "x" << screen_height << "x" << screen_depth << ")." << endl;
    		return false;
    	}
     
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glClearDepth(1.0);
        glShadeModel(GL_SMOOTH);
        glEnable(GL_DEPTH_TEST);
     
    	glViewport(0, 0, screen_width, screen_height);
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	gluPerspective(60.0, (GLfloat)screen_width / (GLfloat)screen_height, 0.0, 50.0);
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    	gluLookAt(0.0, 0.0 , -5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
    	glEnable(GL_LIGHTING);
    	glEnable(GL_LIGHT0);
     
    	float pos[3] = {0.0, 0.0, -5.0};
    	glLightfv(GL_LIGHT0, GL_POSITION, pos);
    	SDL_Event event;
    	float amb[3] = {0.5, 0.5, 0.5};
    	float dif[3] = {0.6, 0.6, 0.6};
    	float spe[3] = {0.7, 0.7, 0.7};
    	float shi[1] = {50.0};
    	while (true)
    	{
    		SDL_PollEvent(&event);
    		switch(event.type)
    		{
    			case SDL_QUIT:
    				SDL_Quit();
    				exit(0);
    		}
    		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    		glRotatef(0.5, 0.1, 0.2, 0.1);
        glBegin(GL_QUADS);
                glMaterialfv(GL_FRONT,GL_SPECULAR,spe);
                glMaterialfv(GL_FRONT,GL_DIFFUSE,dif);
                glMaterialfv(GL_FRONT,GL_AMBIENT,amb);
                glMaterialfv(GL_FRONT,GL_SHININESS, shi);
     
            glNormal3f(0.0, 0.0, -1.0);
            glVertex3f(-1.0, -1.0, -1.0);
            glVertex3f(-1.0, 1.0, -1.0);
            glVertex3f(1.0, 1.0, -1.0);
            glVertex3f(1.0, -1.0, -1.0);
            glNormal3f(0.0, 0.0, 1.0);
            glVertex3f(-1.0, -1.0, 1.0);
            glVertex3f(-1.0, 1.0, 1.0);
            glVertex3f(1.0, 1.0, 1.0);
            glVertex3f(1.0, -1.0, 1.0);
        glEnd();
    		SDL_GL_SwapBuffers();
    	}
    	return 0;
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Je ne vois pas le problème avec l'éclairage mais il me semble que le paramètre zNear de gluPerspective() devrait être non nul.

  3. #3
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    tu pourrais préciser quel est le problème que tu rencontres ?
    - tu ne vois rien
    - tu vois des trucs bizarres
    - quoi d'autre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glRotatef(0.5, 0.1, 0.2, 0.1);
    c'est original ça tu devrais relire la doc sur glRotate

    glRotatef(angle, x, y, z)
    angle : angle de la rotation en degrés
    x, y, z : coordonnées du vecteur définissant la rotation
    bien que je ne pense pas que ton problème se situe là

    ps: je plussoie Boromir73, le znear doit être positif non nul et c'est une source de problèmes
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Merci a vous, c'etait bien le gluPerspective qui déconnait à cause du 0.0 Une connerie, je m'y attendais.
    Sinon pour le glRotate, j'ai pris 4 valeurs purement arbitraires

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Joomla!] [hack Chronocomments 1.2] Problème d'affichage avec les {} !
    Par Potus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/07/2009, 10h58
  2. problème d'affichage avec les structures
    Par jlion5 dans le forum C
    Réponses: 1
    Dernier message: 03/05/2008, 13h13
  3. Problème d'affichage avec les float
    Par Poseidon62 dans le forum Ada
    Réponses: 9
    Dernier message: 04/05/2007, 14h03
  4. [PHP-JS] Problème d'affichage avec les ', ê, é,è
    Par cyberdevelopment dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2006, 13h49
  5. Réponses: 6
    Dernier message: 19/05/2005, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo