use OpenGL qw(:all); use strict; our $Light_Position = pack("f4", 0.0, 0.0, 0.0, 5.0 ); our $Specular_Material = pack("f4",1.0, 1.0, 1.0, 1.0); our $Shiny_Material = (50.0 ); our $newQuad = gluNewQuadric (); our $window; sub init { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); glMaterialfv_s(GL_FRONT, GL_SPECULAR, $Specular_Material); glMaterialfv_s(GL_FRONT, GL_SHININESS, $Shiny_Material); glLightfv_s(GL_LIGHT1, GL_POSITION, $Light_Position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT1); } sub ReSizeGLScene { my ($w, $h) = @_; glViewport (0, 0, $w, $h); glMatrixMode (GL_PROJECTION); glLoadIdentity(); if ($w <= $h) { glOrtho (-1.5, 1.5, -1.5*$h / $w, 1.5*$h/$w, -10.0, 10.0); } else { glOrtho (-1.5*$w/$h,1.5*$w/$h, -1.5, 1.5, -10.0, 10.0); } glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } sub DrawGLScene { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gluSphere($newQuad,1, 18, 18); glFlush (); } glutInit(); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow("Window"); init(); glutDisplayFunc(\&DrawGLScene); glutReshapeFunc(\&ReSizeGLScene); glutMainLoop; return 0;