4fc19578cde7fdf292e7b54985384f2126f38061
3 * Test GL_EXT_rescale_normal extension
4 * Brian Paul January 1998 This program is in the public domain.
13 static GLfloat Phi
= 0.0;
16 static void Idle(void)
23 static void Display( void )
25 GLfloat scale
= 0.6 + 0.5 * sin(Phi
);
26 glClear( GL_COLOR_BUFFER_BIT
);
28 glScalef(scale
, scale
, scale
);
29 glutSolidSphere(2.0, 20, 20);
35 static void Reshape( int width
, int height
)
37 glViewport( 0, 0, width
, height
);
38 glMatrixMode( GL_PROJECTION
);
40 glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
41 glMatrixMode( GL_MODELVIEW
);
43 glTranslatef( 0.0, 0.0, -15.0 );
48 static void Init( void )
50 static GLfloat mat
[4] = { 0.8, 0.8, 0.0, 1.0 };
51 static GLfloat pos
[4] = { -1.0, 1.0, 1.0, 0.0 };
53 /* setup lighting, etc */
54 glEnable(GL_LIGHTING
);
56 glMaterialfv(GL_FRONT
, GL_AMBIENT_AND_DIFFUSE
, mat
);
57 glLightfv(GL_LIGHT0
, GL_POSITION
, pos
);
59 glEnable(GL_CULL_FACE
);
61 glDisable(GL_RESCALE_NORMAL_EXT
);
62 glDisable(GL_NORMALIZE
);
72 static void ModeMenu(int entry
)
74 if (entry
==UNSCALED
) {
75 glDisable(GL_RESCALE_NORMAL_EXT
);
76 glDisable(GL_NORMALIZE
);
78 else if (entry
==NORMALIZE
) {
79 glEnable(GL_NORMALIZE
);
80 glDisable(GL_RESCALE_NORMAL_EXT
);
82 else if (entry
==RESCALE
) {
83 glDisable(GL_NORMALIZE
);
84 glEnable(GL_RESCALE_NORMAL_EXT
);
86 else if (entry
==QUIT
) {
93 key(unsigned char k
, int x
, int y
)
107 int main( int argc
, char *argv
[] )
109 glutInit( &argc
, argv
);
110 glutInitWindowPosition(0, 0);
111 glutInitWindowSize( 400, 400 );
113 glutInitDisplayMode( GLUT_RGB
| GLUT_DOUBLE
);
115 glutCreateWindow(argv
[0]);
119 glutIdleFunc( Idle
);
120 glutReshapeFunc( Reshape
);
121 glutDisplayFunc( Display
);
122 glutKeyboardFunc(key
);
124 glutCreateMenu(ModeMenu
);
125 glutAddMenuEntry("Unscaled", UNSCALED
);
126 glutAddMenuEntry("Normalize", NORMALIZE
);
127 glutAddMenuEntry("Rescale EXT", RESCALE
);
128 glutAddMenuEntry("Quit", QUIT
);
129 glutAttachMenu(GLUT_RIGHT_BUTTON
);