From: Richard Rauch Date: Sun, 7 Dec 2003 10:12:22 +0000 (+0000) Subject: Two from Nigel: X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=commitdiff_plain;h=f3714029b481bc31a1876e0d8ae3aa450eaf7924;hp=8a92830a7e30ffcfcc4eae50b0853f8dc7b944c1;p=freeglut Two from Nigel: * Updated shapes.c. I think that it's just reformatting and the addition of some comments. * Added shapes.dsp, a Microsoft Visual C++ Developer Studio Project file for building shapes on WIN32 with MSVC++. git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@381 7f0cb862-5218-0410-a997-914c9d46530a --- diff --git a/progs/demos/shapes/shapes.c b/progs/demos/shapes/shapes.c index bf1ad22..8d08462 100644 --- a/progs/demos/shapes/shapes.c +++ b/progs/demos/shapes/shapes.c @@ -1,143 +1,157 @@ +/* + * FreeGLUT Shapes Demo + * + * Written by Nigel Stewart November 2003 + * + * This program is test harness for the sphere, cone + * and torus shapes in FreeGLUT. + * + * Spinning wireframe and smooth shaded shapes are + * displayed until the ESC or q key is pressed. The + * number of geometry stacks and slices can be adjusted + * using the + and - keys. + */ + #include -#include #include -#include static int slices = 16; static int stacks = 16; +/* GLUT callback Handlers */ + static void -reshape(int width, int height) +resize(int width, int height) { - float ar; - - glViewport( 0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - ar = (float) width / (float) height; - glFrustum ( -ar, ar, -1.0, 1.0, 2.0, 100.0); - - glMatrixMode(GL_MODELVIEW) ; - glLoadIdentity() ; + const float ar = (float) width / (float) height; + + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity() ; } static void display(void) { - float t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - float a = t*90.0; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(-2.4,1.2,-6); - glRotatef(60,1,0,0); - glRotatef(a,0,0,1); - glColor3f(1,0,0); - glutSolidSphere(1,slices,stacks); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0,1.2,-6); - glRotatef(60,1,0,0); - glRotatef(a,0,0,1); - glColor3f(1,0,0); - glutSolidCone(1,1,slices,stacks); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(2.4,1.2,-6); - glRotatef(60,1,0,0); - glRotatef(a,0,0,1); - glColor3f(1,0,0); - glutSolidTorus(0.2,0.8,slices,stacks); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-2.4,-1.2,-6); - glRotatef(60,1,0,0); - glRotatef(a,0,0,1); - glColor3f(1,0,0); - glutWireSphere(1,slices,stacks); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0,-1.2,-6); - glRotatef(60,1,0,0); - glRotatef(a,0,0,1); - glColor3f(1,0,0); - glutWireCone(1,1,slices,stacks); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(2.4,-1.2,-6); - glRotatef(60,1,0,0); - glRotatef(a,0,0,1); - glColor3f(1,0,0); - glutWireTorus(0.2,0.8,slices,stacks); - glPopMatrix(); - - glutSwapBuffers(); + const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; + const double a = t*90.0; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3d(1,0,0); + + glPushMatrix(); + glTranslated(-2.4,1.2,-6); + glRotated(60,1,0,0); + glRotated(a,0,0,1); + glutSolidSphere(1,slices,stacks); + glPopMatrix(); + + glPushMatrix(); + glTranslated(0,1.2,-6); + glRotated(60,1,0,0); + glRotated(a,0,0,1); + glutSolidCone(1,1,slices,stacks); + glPopMatrix(); + + glPushMatrix(); + glTranslated(2.4,1.2,-6); + glRotated(60,1,0,0); + glRotated(a,0,0,1); + glutSolidTorus(0.2,0.8,slices,stacks); + glPopMatrix(); + + glPushMatrix(); + glTranslated(-2.4,-1.2,-6); + glRotated(60,1,0,0); + glRotated(a,0,0,1); + glutWireSphere(1,slices,stacks); + glPopMatrix(); + + glPushMatrix(); + glTranslated(0,-1.2,-6); + glRotated(60,1,0,0); + glRotated(a,0,0,1); + glutWireCone(1,1,slices,stacks); + glPopMatrix(); + + glPushMatrix(); + glTranslated(2.4,-1.2,-6); + glRotated(60,1,0,0); + glRotated(a,0,0,1); + glutWireTorus(0.2,0.8,slices,stacks); + glPopMatrix(); + + glutSwapBuffers(); } static void key(unsigned char key, int x, int y) { - switch (key) { - case 27 : - case 'q': - exit(0); - break; - - case '+': - slices++; - stacks++; - break; - - case '-': - slices--; - stacks--; - break; - } - - glutPostRedisplay(); + switch (key) + { + case 27 : + case 'q': + exit(0); + break; + + case '+': + slices++; + stacks++; + break; + + case '-': + if (slices>3 && stacks>3) + { + slices--; + stacks--; + } + break; + } + + glutPostRedisplay(); } -void -idle() +static void +idle(void) { - glutPostRedisplay(); + glutPostRedisplay(); } -GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; -GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat light_position[] = { 2.0, 5.0, 5.0, 0.0 }; +const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f }; +const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; +const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; +const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f }; -GLfloat mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 }; -GLfloat mat_diffuse[] = { 0.8, 0.8, 0.8, 1.0 }; -GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat high_shininess[] = { 100.0 }; +const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f }; +const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f }; +const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; +const GLfloat high_shininess[] = { 100.0f }; + +/* Program entry point */ int main(int argc, char *argv[]) { - glutInit(&argc, argv); - glutInitWindowSize(640,480); - glutInitWindowPosition (40,40); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); + glutInit(&argc, argv); + glutInitWindowSize(640,480); + glutInitWindowPosition (40,40); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("FreeGLUT Shapes"); + glutCreateWindow("FreeGLUT Shapes"); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutIdleFunc(idle); + glutReshapeFunc(resize); + glutDisplayFunc(display); + glutKeyboardFunc(key); + glutIdleFunc(idle); - glClearColor(1,1,1,1); - glEnable(GL_CULL_FACE); + glClearColor(1,1,1,1); + glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); @@ -146,7 +160,7 @@ main(int argc, char *argv[]) glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); - glEnable(GL_LIGHTING); + glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); @@ -158,7 +172,8 @@ main(int argc, char *argv[]) glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); - glutMainLoop(); + glutMainLoop(); - return EXIT_SUCCESS; + return EXIT_SUCCESS; } + diff --git a/progs/demos/shapes/shapes.dsp b/progs/demos/shapes/shapes.dsp new file mode 100644 index 0000000..0c2f728 --- /dev/null +++ b/progs/demos/shapes/shapes.dsp @@ -0,0 +1,101 @@ +# Microsoft Developer Studio Project File - Name="shapes" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=shapes - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "shapes.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "shapes.mak" CFG="shapes - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "shapes - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "shapes - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "shapes - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FREEGLUT_STATIC" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../ReleaseStatic" + +!ELSEIF "$(CFG)" == "shapes - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FREEGLUT_STATIC" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../DebugStatic" + +!ENDIF + +# Begin Target + +# Name "shapes - Win32 Release" +# Name "shapes - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\shapes.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project +