Total members 11889 |It is currently Fri Mar 29, 2024 3:05 pm Login / Join Codemiles

Java

C/C++

PHP

C#

HTML

CSS

ASP

Javascript

JQuery

AJAX

XSD

Python

Matlab

R Scripts

Weka





In this example we change the shading model of object affected by light source from its default which is GL_SMOOTH to GL_FLAT.
Code:


#include <GL\glut.h>
#include <math.h>      // For math routines (such as sqrt & trig).
 
GLdouble radius
=1.5;
GLfloat qaWhite[] = {1.0, 1.0, 1.0, 1.0}; //White Color
GLfloat qaRed[] = {1.0, 0.0, 0.0, 1.0}; //Red Color

    // Set lighting intensity and color
GLfloat qaAmbientLight[]    = {0.1, 0.1, 0.1, 1.0};
GLfloat qaDiffuseLight[]    = {1, 1, 1, 1.0};
    // Light source position
GLfloat qaLightPosition[]    = {-2, 0, -9.5, 1};// Positional Light
GLfloat qaLightDirection[]    = {1, 1, 1, 0};// Directional Light

void display(void);
void reshape(int x, int y);
 
void initLighting
()
{
    // Add smooth
    glShadeModel(GL_FLAT);
    // Enable lighting
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

     // Set lighting intensity and color
       glLightfv(GL_LIGHT0, GL_AMBIENT, qaAmbientLight);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, qaDiffuseLight);
     glLightfv(GL_LIGHT0, GL_POSITION, qaLightPosition);
    ////////////////////////////////////////////////
    //glLightf( GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.2f );
     glLightf( GL_LIGHT0, GL_LINEAR_ATTENUATION , 0.5f );
    //glLightf( GL_LIGHT0, GL_QUADRATIC_ATTENUATION , 0.009f );

        

}
void keyboard(unsigned char key, int x, int y)
{
    
     
     if 
(key == 'l' || key == 'L')  
    
{ 
          glEnable
(GL_LIGHTING);
    }
    else if (key == 'd' || key == 'D')  
    
{ 
        glDisable
(GL_LIGHTING);
    }

}

 
int main 
(int argc, char **argv)
{
    glutInit(&argc, argv); 
     glutInitDisplayMode
(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
    glutInitWindowSize(750,750);
    glutCreateWindow("Teapot -light attenuation");
    initLighting(); 

     
 
    glutDisplayFunc
(display);
    glutKeyboardFunc(keyboard); // Register keyboard callback
    glutReshapeFunc(reshape);
    glutMainLoop();
    return 0;
}
 
void display
(void)
{


    glMatrixMode(GL_MODELVIEW);
    // clear the drawing buffer.
    glClear(GL_COLOR_BUFFER_BIT);
    // clear the identity matrix.
    glLoadIdentity();
   
    glTranslatef
(0.0,0.0,-5.0);
 
    


      glPushMatrix
();
 
      glTranslatef
(0.0,0.0,-2.0);
    // Set material properties
       glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, qaRed);

    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, qaRed);

 
     glutSolidTeapot
(radius);
     glPopMatrix();


     

    glFlush
();
    glutSwapBuffers();      
   
}
 
void reshape
(int x, int y)
{
    if (== 0 || x == 0) return;   
    glMatrixMode
(GL_PROJECTION);  
    glLoadIdentity
(); 
    
    gluPerspective
(39.0,(GLdouble)x/(GLdouble)y,0.6,40.0);
    glMatrixMode(GL_MODELVIEW);
    glViewport(0,0,x,y);  //Use the whole window for rendering
}
 










 





Attachments:
smooth_shade.png
smooth_shade.png [ 63.01 KiB | Viewed 8352 times ]
flat_shade.png
flat_shade.png [ 20.27 KiB | Viewed 8352 times ]

_________________
M. S. Rakha, Ph.D.
Queen's University
Canada
Author:
Mastermind
User avatar Posts: 2715
Have thanks: 74 time
Post new topic Reply to topic  [ 1 post ] 

  Related Posts  to : Change the shading of object
 Connection object in jsp     -  
 How to use connection object in jsp     -  
 Object without new Operator     -  
 object detection     -  
 Object Orientation in c++, how to a do object Orientation     -  
 use out object in a method at jsp     -  
 3D-object loader     -  
 Add spot light to object     -  
 need help about object detection using haarTraining     -  
 Java Object Reading     -  



Topic Tags

C++ Graphics
cron





Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team
Codemiles.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com