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

Windows Discussion :

[openGL] Ombrage de Gouraud


Sujet :

Windows

  1. #1
    grmi91
    Invité(e)
    Par défaut [openGL] Ombrage de Gouraud
    Bonjour,
    Je viens de faire l'ombrage plat sur un cube et je souhaiterais faire un ombrage de Gouraud en openGL.

    code de l'ombrage plat :
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    #define ESCAPE 27
    
    GLfloat light_position[] = { 1.0F,0.0F,1.0F,0.0F };
    GLfloat lightambiant[] = { 1.0f,1.0f,1.0f,0.0};
    int window; 
    
    void InitGL(int Width, int Height)	        
    {
    	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);		
    	glClearDepth(1.0);
    	glDepthFunc(GL_LESS);	
    	glEnable(GL_DEPTH_TEST);	
    	glEnable(GL_LIGHTING);
    	glEnable(GL_LIGHT0); 	
    	glLightfv(GL_LIGHT0,GL_POSITION,light_position);	
    	glLightfv(GL_LIGHT0,GL_AMBIENT,lightambiant);
    
    
    	/* model d'ombrage */
    	glShadeModel(GL_SMOOTH);		//GL_FLAT = ombrage plat; GL_SMOOTH = ombrage de Gouraud (degradé)
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();				
    	gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);	
    	glMatrixMode(GL_MODELVIEW);
    }
    
    
    void ReSizeGLScene(int Width, int Height)
    {
    	// ...
    }
    
    void DrawGLScene()
    {  	
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		
      	glLoadIdentity();		
    	glLoadIdentity();
    	gluLookAt(8.0,6.0,4.0,0.0,0.0,0.0,0.0,1.0,0.0); 
    
    
                 /*************************
                 * Cube avec ombrage plat *
                 *************************/
                 //dessin cube en donner les 4 sommets et la normale des 6 faces
      	     glBegin (GL_QUADS);
    		// face 1
    		glNormal3f (0.0f,0.0f,1.0f);      
    		glVertex3i(1,1,1);                  
    		glVertex3i(1,-1,1);                  
    		glVertex3i(-1,-1,1);                 
    		glVertex3i(-1,1,1);                  
                    //face2
    		glNormal3f (0.0f,0.0f,-1.0f);     
    		glVertex3i(1,1,-1);                 
    		glVertex3i(1,-1,-1);                 
    		glVertex3i(-1,-1,-1);              
    		glVertex3i(-1,1,-1);                  
    	             // face3
    	glNormal3f (1.0f,0.0f,0.0f);      
    		glVertex3i(1,1,1);                   
    		glVertex3i(1,-1,1);                  
    		glVertex3i(1,-1,-1);                  
    		glVertex3i(1,1,-1);                  
    	             // face4
    		glNormal3f (-1.0f,0.0f,0.0f);     
    		glVertex3i(-1,1,1);                
    		glVertex3i(-1,-1,1);                
    		glVertex3i(-1,-1,-1);               
    		glVertex3i(-1,1,-1);                  
    	   // face5
    		glNormal3f (0.0f,1.0f,0.0f);     
    		glVertex3i(-1,1,-1);                
    		glVertex3i(-1,1,1);                  
    		glVertex3i(1,1,1);                   
    		glVertex3i(1,1,-1);                  
    	   // face6
    		glNormal3f (0.0f,-1.0f,0.0f);     
    	    	glVertex3i(-1,-1,1);                 
    		glVertex3i(1,-1,1);                  
    		glVertex3i(1,-1,-1);                 
    	glEnd ();
    	glutSwapBuffers();
    }
    
    void keyPressed(unsigned char key, int x, int y) 
    {
    	// ...
    }
    
    int main(int argc, char **argv) 
    {
    	// ...
    }
    Donc si quelqu'un pouvait m'aider pour l'ombrage de Gouraud ce serait sympa.
    Merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Peut être que tu auras plus de réponses sur le forum OpenGL ici : http://www.developpez.net/forums/forumdisplay.php?f=53

Discussions similaires

  1. [openGL] Ombrage de Gouraud
    Par grmi91 dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/03/2008, 09h52
  2. Directx ou opengl
    Par scorpiwolf dans le forum DirectX
    Réponses: 13
    Dernier message: 07/02/2003, 08h29
  3. OpenGL et *.3ds
    Par tintin22 dans le forum OpenGL
    Réponses: 4
    Dernier message: 06/05/2002, 13h51
  4. OpenGL ou DirectX
    Par Nadir dans le forum DirectX
    Réponses: 6
    Dernier message: 02/05/2002, 12h48
  5. Opengl -- Les surfaces
    Par Anonymous dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/05/2002, 10h14

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