diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2010-01-12 11:25:02 +0800 |
---|---|---|
committer | Chia-I Wu <olvaffe@gmail.com> | 2010-01-12 11:25:02 +0800 |
commit | 562c127693200822f04a145db50add1be2425d7b (patch) | |
tree | 9441774fb212b17ddf2a364f06abc43f166cc00b /progs | |
parent | e5d351dcfde58777162552cf5cd2a9cd8299f4cd (diff) | |
parent | 077d6dd7508af88509dd0499c5dfbdaa186b4015 (diff) |
Merge branch 'master' into opengl-es-v2
Conflicts:
src/mesa/main/dd.h
Diffstat (limited to 'progs')
342 files changed, 2401 insertions, 1268 deletions
diff --git a/progs/.gitignore b/progs/.gitignore new file mode 100644 index 0000000000..cb77d18a4b --- /dev/null +++ b/progs/.gitignore @@ -0,0 +1 @@ +*.dSYM diff --git a/progs/Makefile b/progs/Makefile index 3700707dfb..5bc444e952 100644 --- a/progs/Makefile +++ b/progs/Makefile @@ -15,22 +15,18 @@ message: subdirs: - @if test -n "$(SUBDIRS)" ; then \ - for dir in $(SUBDIRS) ; do \ - if [ -d $$dir ] ; then \ - (cd $$dir && $(MAKE)) || exit 1 ; \ - fi \ - done \ - fi + @list='$(SUBDIRS)'; for dir in $$list ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE)) || exit 1 ; \ + fi \ + done # Dummy install target install: clean: - -@if test -n "$(SUBDIRS)" ; then \ - for dir in $(SUBDIRS) tests ; do \ - if [ -d $$dir ] ; then \ - (cd $$dir && $(MAKE) clean) ; \ - fi \ - done \ - fi + @list='$(SUBDIRS)'; for dir in $$list tests ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done diff --git a/progs/SConscript b/progs/SConscript index 66eaf9e541..3b180d00bc 100644 --- a/progs/SConscript +++ b/progs/SConscript @@ -1,5 +1,43 @@ SConscript([ 'util/SConscript', +]) + +Import('*') + +progs_env = env.Clone() + +if progs_env['platform'] == 'windows': + progs_env.Append(CPPDEFINES = ['NOMINMAX']) + progs_env.Prepend(LIBS = [ + 'winmm', + 'kernel32', + 'user32', + 'gdi32', + ]) + +# OpenGL +if progs_env['platform'] == 'windows': + progs_env.Prepend(LIBS = ['glu32', 'opengl32']) +else: + progs_env.Prepend(LIBS = ['GLU', 'GL']) + +# Glut +progs_env.Prepend(LIBS = [glut]) + +# GLEW +progs_env.Prepend(LIBS = [glew]) + +progs_env.Prepend(CPPPATH = [ + '#progs/util', +]) + +progs_env.Prepend(LIBS = [ + util, +]) + +Export('progs_env') + +SConscript([ 'demos/SConscript', 'glsl/SConscript', 'redbook/SConscript', diff --git a/progs/SConstruct b/progs/SConstruct deleted file mode 100644 index 4d268cc6d7..0000000000 --- a/progs/SConstruct +++ /dev/null @@ -1,65 +0,0 @@ -import os -import os.path -import sys - -env = Environment( - tools = ['generic'], - toolpath = ['../scons'], - ENV = os.environ, -) - - -# Use Mesa's headers and libs -if 1: - build_topdir = 'build' - build_subdir = env['platform'] - if env['machine'] != 'generic': - build_subdir += '-' + env['machine'] - if env['debug']: - build_subdir += "-debug" - if env['profile']: - build_subdir += "-profile" - build_dir = os.path.join(build_topdir, build_subdir) - - env.Append(CPPDEFINES = ['GLEW_STATIC']) - env.Append(CPPPATH = ['#../include']) - env.Append(LIBPATH = [ - '#../' + build_dir + '/glew/', - '#../' + build_dir + '/glut/glx', - ]) - - -conf = Configure(env) - -# OpenGL -if env['platform'] == 'windows': - env.Prepend(LIBS = ['glu32', 'opengl32']) -else: - env.Prepend(LIBS = ['GLU', 'GL']) - -# Glut -env['GLUT'] = False -if conf.CheckCHeader('GL/glut.h'): - if env['platform'] == 'windows': - env['GLUT_LIB'] = 'glut32' - else: - env['GLUT_LIB'] = 'glut' - env['GLUT'] = True - -# GLEW -env['GLEW'] = False -if conf.CheckCHeader('GL/glew.h'): - env['GLEW_LIB'] = 'glew' - env['GLEW'] = True - env.Prepend(LIBS = ['glew']) - -conf.Finish() - - -Export('env') - -SConscript( - 'SConscript', - build_dir = env['build'], - duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html -) diff --git a/progs/demos/SConscript b/progs/demos/SConscript index f851870bcf..742dd66f36 100644 --- a/progs/demos/SConscript +++ b/progs/demos/SConscript @@ -1,84 +1,66 @@ Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - progs = [ - 'arbfplight', - 'arbfslight', - 'arbocclude', - 'bounce', - 'clearspd', - 'copypix', - 'cubemap', - 'drawpix', - 'engine', - 'fbo_firecube', - 'fire', - 'fogcoord', - 'fplight', - 'fslight', - 'gamma', - 'gearbox', - 'gears', - 'geartrain', - 'glinfo', - 'gloss', - 'gltestperf', - 'ipers', - 'isosurf', - 'lodbias', - 'morph3d', - 'multiarb', - 'paltex', - 'pointblast', - 'ray', - 'readpix', - 'reflect', - 'renormal', - 'shadowtex', - 'singlebuffer', - 'spectex', - 'spriteblast', - 'stex3d', - 'teapot', - 'terrain', - 'tessdemo', - 'texcyl', - 'texenv', - 'textures', - 'trispd', - 'tunnel', - 'tunnel2', - 'vao_demo', - 'winpos', - 'dinoshade', - 'fbotexture', - 'projtex', + 'arbfplight', + 'arbfslight', + 'arbocclude', + 'bounce', + 'clearspd', + 'copypix', + 'cubemap', + 'drawpix', + 'engine', + 'fbo_firecube', + 'fire', + 'fogcoord', + 'fplight', + 'fslight', + 'gamma', + 'gearbox', + 'gears', + 'geartrain', + 'glinfo', + 'gloss', + 'gltestperf', + 'ipers', + 'isosurf', + 'lodbias', + 'morph3d', + 'multiarb', + 'paltex', + 'pointblast', + 'ray', + 'readpix', + 'reflect', + 'renormal', + 'shadowtex', + 'singlebuffer', + 'spectex', + 'spriteblast', + 'stex3d', + 'teapot', + 'terrain', + 'tessdemo', + 'texcyl', + 'texenv', + 'textures', + 'trispd', + 'tunnel', + 'tunnel2', + 'vao_demo', + 'winpos', + 'dinoshade', + 'fbotexture', + 'projtex', ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = prog + '.c', ) -env.Program( +progs_env.Program( target = 'rain', source = [ 'rain.cxx', diff --git a/progs/demos/arbfplight.c b/progs/demos/arbfplight.c index 7b7a12bf88..861b3b7252 100644 --- a/progs/demos/arbfplight.c +++ b/progs/demos/arbfplight.c @@ -388,9 +388,8 @@ static void Init( void ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 200, 200 ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); Win = glutCreateWindow(argv[0]); glutReshapeFunc( Reshape ); diff --git a/progs/demos/arbfslight.c b/progs/demos/arbfslight.c index 275c85105e..a0ce7f3f5b 100644 --- a/progs/demos/arbfslight.c +++ b/progs/demos/arbfslight.c @@ -311,9 +311,8 @@ static void Init (void) int main (int argc, char *argv[]) { - glutInit (&argc, argv); - glutInitWindowPosition ( 0, 0); glutInitWindowSize (200, 200); + glutInit (&argc, argv); glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow (argv[0]); glutReshapeFunc (Reshape); diff --git a/progs/demos/arbocclude.c b/progs/demos/arbocclude.c index 9188ad5a56..f669a1f26b 100644 --- a/progs/demos/arbocclude.c +++ b/progs/demos/arbocclude.c @@ -268,9 +268,8 @@ static void Init( void ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 400, 400 ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); Win = glutCreateWindow(argv[0]); glewInit(); diff --git a/progs/demos/bounce.c b/progs/demos/bounce.c index 436bc7d1fb..a9a291e0a6 100644 --- a/progs/demos/bounce.c +++ b/progs/demos/bounce.c @@ -192,10 +192,8 @@ visible(int vis) int main(int argc, char *argv[]) { - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); glutInitWindowSize(600, 450); - + glutInit(&argc, argv); IndexMode = argc > 1 && strcmp(argv[1], "-ci") == 0; if (IndexMode) diff --git a/progs/demos/clearspd.c b/progs/demos/clearspd.c index 42953f6675..c40f118a64 100644 --- a/progs/demos/clearspd.c +++ b/progs/demos/clearspd.c @@ -187,9 +187,8 @@ int main( int argc, char *argv[] ) Init( argc, argv ); - glutInit( &argc, argv ); glutInitWindowSize( (int) Width, (int) Height ); - glutInitWindowPosition( 0, 0 ); + glutInit( &argc, argv ); mode = ColorMode | GLUT_DOUBLE; if (BufferMask & GL_STENCIL_BUFFER_BIT) diff --git a/progs/demos/copypix.c b/progs/demos/copypix.c index a13339ea62..98c835f44f 100644 --- a/progs/demos/copypix.c +++ b/progs/demos/copypix.c @@ -237,6 +237,9 @@ int main( int argc, char *argv[] ) const char *filename = IMAGE_FILE; int i = 1; + glutInitWindowSize( WinWidth, WinHeight ); + glutInit( &argc, argv ); + if (argc > i && strcmp(argv[i], "-ci")==0) { ciMode = GL_TRUE; i++; @@ -245,10 +248,6 @@ int main( int argc, char *argv[] ) filename = argv[i]; } - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( WinWidth, WinHeight ); - if (ciMode) glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE ); else diff --git a/progs/demos/cubemap.c b/progs/demos/cubemap.c index 20332b1d96..3e79d6a558 100644 --- a/progs/demos/cubemap.c +++ b/progs/demos/cubemap.c @@ -613,9 +613,8 @@ static void parse_args(int argc, char *argv[]) int main( int argc, char *argv[] ) { - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); glutInitWindowSize(600, 500); + glutInit(&argc, argv); glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); glutCreateWindow("Texture Cube Mapping"); glewInit(); diff --git a/progs/demos/drawpix.c b/progs/demos/drawpix.c index 5490bcc635..9bc7086e04 100644 --- a/progs/demos/drawpix.c +++ b/progs/demos/drawpix.c @@ -328,6 +328,9 @@ int main( int argc, char *argv[] ) const char *filename = IMAGE_FILE; int i = 1; + glutInitWindowSize( 500, 400 ); + glutInit( &argc, argv ); + if (argc > i && strcmp(argv[i], "-ci")==0) { ciMode = GL_TRUE; i++; @@ -336,10 +339,6 @@ int main( int argc, char *argv[] ) filename = argv[i]; } - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 500, 400 ); - if (ciMode) glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE ); else diff --git a/progs/demos/engine.c b/progs/demos/engine.c index 3cf311e778..c54e3b8fb8 100644 --- a/progs/demos/engine.c +++ b/progs/demos/engine.c @@ -1308,8 +1308,8 @@ Init(void) int main(int argc, char *argv[]) { - glutInit(&argc, argv); glutInitWindowSize(WinWidth, WinHeight); + glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("OpenGL Engine Demo"); glewInit(); diff --git a/progs/demos/fbo_firecube.c b/progs/demos/fbo_firecube.c index b3f7e00e5a..17767a148f 100644 --- a/progs/demos/fbo_firecube.c +++ b/progs/demos/fbo_firecube.c @@ -1051,11 +1051,11 @@ visible(int vis) int main(int argc, char *argv[]) { + glutInitWindowSize(WinWidth, WinHeight); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutInitWindowSize(WinWidth, WinHeight); Win = glutCreateWindow("fbo_firecube"); glewInit(); init(argc, argv); diff --git a/progs/demos/fire.c b/progs/demos/fire.c index dd70f6141d..9c351e80e5 100644 --- a/progs/demos/fire.c +++ b/progs/demos/fire.c @@ -6,6 +6,7 @@ * Humanware s.r.l. */ +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <math.h> @@ -733,7 +734,6 @@ main(int ac, char **av) HEIGHT = atoi(av[3]); } - glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); @@ -759,6 +759,7 @@ main(int ac, char **av) glFogfv(GL_FOG_COLOR, fogcolor); glFogf(GL_FOG_DENSITY, 0.1); + assert(np > 0); p = (part *) malloc(sizeof(part) * np); for (i = 0; i < np; i++) diff --git a/progs/demos/fogcoord.c b/progs/demos/fogcoord.c index 6f50993c98..336aa58075 100644 --- a/progs/demos/fogcoord.c +++ b/progs/demos/fogcoord.c @@ -15,8 +15,6 @@ #define DEPTH 5.0f -static PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointer_ext; - static GLfloat camz; static GLint fogMode; @@ -406,8 +404,8 @@ Init(void) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); glutInitWindowSize( 600, 600 ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow(argv[0]); glewInit(); diff --git a/progs/demos/fplight.c b/progs/demos/fplight.c index c297354103..f52a4f7868 100644 --- a/progs/demos/fplight.c +++ b/progs/demos/fplight.c @@ -268,9 +268,8 @@ static void Init( void ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 200, 200 ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); Win = glutCreateWindow(argv[0]); glewInit(); diff --git a/progs/demos/fslight.c b/progs/demos/fslight.c index f0d76a4a06..395b7caa2c 100644 --- a/progs/demos/fslight.c +++ b/progs/demos/fslight.c @@ -353,6 +353,7 @@ MakeSphere(void) glNewList(SphereList, GL_COMPILE); gluSphere(obj, 2.0f, 10, 5); glEndList(); + gluDeleteQuadric(obj); } static void @@ -599,9 +600,8 @@ ParseOptions(int argc, char *argv[]) int main(int argc, char *argv[]) { - glutInit(&argc, argv); - glutInitWindowPosition( 0, 0); glutInitWindowSize(200, 200); + glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); win = glutCreateWindow(argv[0]); glutReshapeFunc(Reshape); diff --git a/progs/demos/gamma.c b/progs/demos/gamma.c index 9b2c3e1052..61c6d125fb 100644 --- a/progs/demos/gamma.c +++ b/progs/demos/gamma.c @@ -146,12 +146,9 @@ display(void) int main(int argc, char **argv) { + glutInitWindowSize(500, 400); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - - glutInitWindowPosition(50, 50); - glutInitWindowSize(500, 400); - glutCreateWindow("gamma test patterns"); glutReshapeFunc(Reshape); glutDisplayFunc(display); diff --git a/progs/demos/gearbox.c b/progs/demos/gearbox.c index 2dcf32f92f..71d0281904 100644 --- a/progs/demos/gearbox.c +++ b/progs/demos/gearbox.c @@ -474,10 +474,10 @@ visible(int vis) int main(int argc, char *argv[]) { + glutInitWindowSize(WinWidth, WinHeight); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutInitWindowSize(WinWidth, WinHeight); Win = glutCreateWindow("gearbox"); init(argc, argv); diff --git a/progs/demos/gears.c b/progs/demos/gears.c index 6016162d6f..31a5b79eab 100644 --- a/progs/demos/gears.c +++ b/progs/demos/gears.c @@ -385,11 +385,9 @@ visible(int vis) int main(int argc, char *argv[]) { + glutInitWindowSize(300, 300); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - - glutInitWindowPosition(0, 0); - glutInitWindowSize(300, 300); win = glutCreateWindow("Gears"); init(argc, argv); diff --git a/progs/demos/geartrain.c b/progs/demos/geartrain.c index 8fe405e807..00b6e78b72 100644 --- a/progs/demos/geartrain.c +++ b/progs/demos/geartrain.c @@ -25,6 +25,7 @@ */ +#include <assert.h> #include <math.h> #include <stdlib.h> #include <GL/glut.h> @@ -129,8 +130,10 @@ Clear_Buffers () static void LoadTriplet (TDA A) { + int result; Clear_Buffers (); - fscanf (mainfile, "%s %s %s %s", Buf1, Buf2, Buf3, Buf4); + result = fscanf (mainfile, "%s %s %s %s", Buf1, Buf2, Buf3, Buf4); + assert(result != EOF); A[0] = atof (Buf2); A[1] = atof (Buf3); A[2] = atof (Buf4); @@ -140,8 +143,10 @@ LoadTriplet (TDA A) static void LoadReal (float *a) { + int result; Clear_Buffers (); - fscanf (mainfile, "%s %s", Buf1, Buf2); + result = fscanf (mainfile, "%s %s", Buf1, Buf2); + assert(result != EOF); *a = atof (Buf2); } @@ -149,8 +154,10 @@ LoadReal (float *a) static void LoadInteger (int *a) { + int result; Clear_Buffers (); - fscanf (mainfile, "%s %s", Buf1, Buf2); + result = fscanf (mainfile, "%s %s", Buf1, Buf2); + assert(result != EOF); *a = atoi (Buf2); } @@ -158,8 +165,10 @@ LoadInteger (int *a) static void LoadText (char *a) { + int result; Clear_Buffers (); - fscanf (mainfile, "%s %s", Buf1, Buf2); + result = fscanf (mainfile, "%s %s", Buf1, Buf2); + assert(result != EOF); strcpy (a, Buf2); } @@ -177,8 +186,10 @@ getdata (char filename[]) do { + int result; Clear_Buffers (); - fscanf (mainfile, "%s", Buf1); + result = fscanf (mainfile, "%s", Buf1); + (void) result; if (ferror (mainfile)) { printf ("\nError opening file !\n"); @@ -1049,19 +1060,18 @@ main (int argc, char *argv[]) { char *file; - if (argc < 2) - file = "geartrain.dat"; - else - file = argv[1]; - - glutInit(&argc, argv); - glutInitWindowPosition (0, 0); glutInitWindowSize(640,480); + glutInit(&argc, argv); glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); if (glutCreateWindow ("Gear Train Simulation") == GL_FALSE) exit (1); + if (argc < 2) + file = "geartrain.dat"; + else + file = argv[1]; + getdata (file); process (); init (); diff --git a/progs/demos/gloss.c b/progs/demos/gloss.c index 69694b23a0..578736b4e2 100644 --- a/progs/demos/gloss.c +++ b/progs/demos/gloss.c @@ -436,8 +436,8 @@ static void Init( int argc, char *argv[] ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); glutInitWindowSize(WinWidth, WinHeight); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow(argv[0] ); glewInit(); diff --git a/progs/demos/gltestperf.c b/progs/demos/gltestperf.c index 2188b02419..3658a39598 100644 --- a/progs/demos/gltestperf.c +++ b/progs/demos/gltestperf.c @@ -569,10 +569,9 @@ main(int ac, char **av) if (ac == 2) frontbuffer = 0; + glutInitWindowSize(640, 480); glutInit(&ac, av); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowPosition(0, 0); - glutInitWindowSize(640, 480); glutCreateWindow("OpenGL/Mesa Performances"); glutDisplayFunc(display); glutMainLoop(); diff --git a/progs/demos/ipers.c b/progs/demos/ipers.c index 5d82b0dc92..265378b90a 100644 --- a/progs/demos/ipers.c +++ b/progs/demos/ipers.c @@ -133,6 +133,8 @@ initdlists(void) glEndList(); } + + gluDeleteQuadric(obj); } static void @@ -680,7 +682,6 @@ main(int ac, char **av) fprintf(stderr, "IperS V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n"); - glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); diff --git a/progs/demos/isosurf.c b/progs/demos/isosurf.c index 2e9dff1726..dbe4d8d172 100644 --- a/progs/demos/isosurf.c +++ b/progs/demos/isosurf.c @@ -132,9 +132,11 @@ static void read_surface( char *filename ) numverts = 0; while (!feof(f) && numverts<maxverts) { - fscanf( f, "%f %f %f %f %f %f", - &data[numverts][0], &data[numverts][1], &data[numverts][2], - &data[numverts][3], &data[numverts][4], &data[numverts][5] ); + int result; + result = fscanf( f, "%f %f %f %f %f %f", + &data[numverts][0], &data[numverts][1], &data[numverts][2], + &data[numverts][3], &data[numverts][4], &data[numverts][5] ); + (void) result; numverts++; } numverts--; @@ -1061,9 +1063,8 @@ int main(int argc, char **argv) read_surface( "isosurf.dat" ); - glutInit( &argc, argv); - glutInitWindowPosition(0, 0); glutInitWindowSize(400, 400); + glutInit( &argc, argv); type = GLUT_DEPTH; type |= GLUT_RGB; diff --git a/progs/demos/lodbias.c b/progs/demos/lodbias.c index 8d39bd605a..23488b1616 100644 --- a/progs/demos/lodbias.c +++ b/progs/demos/lodbias.c @@ -282,9 +282,8 @@ static void Init( void ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 350, 350 ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); win = glutCreateWindow(argv[0]); glutReshapeFunc( Reshape ); diff --git a/progs/demos/morph3d.c b/progs/demos/morph3d.c index 6aca8270ff..0f8ac426f3 100644 --- a/progs/demos/morph3d.c +++ b/progs/demos/morph3d.c @@ -841,9 +841,8 @@ int main(int argc, char **argv) object=1; - glutInit(&argc, argv); - glutInitWindowPosition(0,0); glutInitWindowSize(640,480); + glutInit(&argc, argv); glutInitDisplayMode( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB ); @@ -887,5 +886,6 @@ int main(int argc, char **argv) glutIdleFunc( idle_ ); glutDisplayFunc( draw ); glutMainLoop(); - + + return 0; } diff --git a/progs/demos/multiarb.c b/progs/demos/multiarb.c index 3d89d3a13e..82796a0c3f 100644 --- a/progs/demos/multiarb.c +++ b/progs/demos/multiarb.c @@ -338,9 +338,8 @@ int main( int argc, char *argv[] ) { GLint i; - glutInit( &argc, argv ); glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); glutCreateWindow(argv[0] ); glewInit(); diff --git a/progs/demos/paltex.c b/progs/demos/paltex.c index d0cbcfb5e9..5d4b8662b5 100644 --- a/progs/demos/paltex.c +++ b/progs/demos/paltex.c @@ -248,12 +248,9 @@ static void Init2( void ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 400, 300 ); - + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0]); glewInit(); diff --git a/progs/demos/pointblast.c b/progs/demos/pointblast.c index 2d70b72589..b4d0a67f99 100644 --- a/progs/demos/pointblast.c +++ b/progs/demos/pointblast.c @@ -427,10 +427,10 @@ int main(int argc, char **argv) { int i; + + glutInitWindowSize(300, 300); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutInitWindowPosition(0, 0); - glutInitWindowSize(300, 300); for (i=1; i<argc; i++) { if(!strcmp("-noms", argv[i])) { diff --git a/progs/demos/projtex.c b/progs/demos/projtex.c index 99154d7bdc..d162568b9f 100644 --- a/progs/demos/projtex.c +++ b/progs/demos/projtex.c @@ -245,6 +245,10 @@ loadImageTextures(void) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); } glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor); + + free(texData3); + free(texData4); + free(image); } } @@ -994,18 +998,17 @@ menu(int selection) int main(int argc, char **argv) { + glutInitWindowSize(500,500); glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); + (void) glutCreateWindow("projtex"); + glewInit(); if (argc > 1) { NumTextures = atoi(argv[1]); } assert(NumTextures <= MAX_TEX); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); - glutInitWindowSize(500,500); - (void) glutCreateWindow("projtex"); - glewInit(); - loadTexture = loadImageTextures; drawObject = drawCube; initialize(); diff --git a/progs/demos/ray.c b/progs/demos/ray.c index c2d8e4f545..9cc464d239 100644 --- a/progs/demos/ray.c +++ b/progs/demos/ray.c @@ -834,6 +834,8 @@ initdlists(void) gluQuadricTexture(obj, GL_TRUE); gluSphere(obj, SPHERE_RADIUS, 16, 16); glEndList(); + + gluDeleteQuadric(obj); } int @@ -854,7 +856,6 @@ main(int ac, char **av) } */ - glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); diff --git a/progs/demos/readpix.c b/progs/demos/readpix.c index bbb3a68eff..cc4e490269 100644 --- a/progs/demos/readpix.c +++ b/progs/demos/readpix.c @@ -219,7 +219,7 @@ Display( void ) GLint reads = 0; GLint endTime; GLint startTime = glutGet(GLUT_ELAPSED_TIME); - GLdouble seconds, pixelsPerSecond; + GLdouble seconds, mpixels, mpixelsPerSecond; printf("Benchmarking...\n"); do { glReadPixels(APosX, APosY, ImgWidth, ImgHeight, @@ -228,9 +228,10 @@ Display( void ) endTime = glutGet(GLUT_ELAPSED_TIME); } while (endTime - startTime < 4000); /* 4 seconds */ seconds = (double) (endTime - startTime) / 1000.0; - pixelsPerSecond = reads * ImgWidth * ImgHeight / seconds; - printf("Result: %d reads in %f seconds = %f pixels/sec\n", - reads, seconds, pixelsPerSecond); + mpixels = reads * (ImgWidth * ImgHeight / (1000.0 * 1000.0)); + mpixelsPerSecond = mpixels / seconds; + printf("Result: %d reads in %f seconds = %f Mpixels/sec\n", + reads, seconds, mpixelsPerSecond); Benchmark = GL_FALSE; } else { @@ -382,12 +383,11 @@ int main( int argc, char *argv[] ) { GLboolean ciMode = GL_FALSE; + glutInitWindowSize( 750, 250 ); + glutInit( &argc, argv ); if (argc > 1 && strcmp(argv[1], "-ci")==0) { ciMode = GL_TRUE; } - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 750, 250 ); if (ciMode) glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE ); else diff --git a/progs/demos/renormal.c b/progs/demos/renormal.c index 9e5da95484..61dd860ddb 100644 --- a/progs/demos/renormal.c +++ b/progs/demos/renormal.c @@ -112,12 +112,9 @@ key(unsigned char k, int x, int y) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition(0, 0); glutInitWindowSize( 400, 400 ); - + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0]); Init(); diff --git a/progs/demos/shadowtex.c b/progs/demos/shadowtex.c index dc5a4bbc48..036f73d40b 100644 --- a/progs/demos/shadowtex.c +++ b/progs/demos/shadowtex.c @@ -1022,9 +1022,8 @@ PrintHelp(void) int main(int argc, char *argv[]) { - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); glutInitWindowSize(WindowWidth, WindowHeight); + glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL); glutCreateWindow(argv[0]); glewInit(); diff --git a/progs/demos/spectex.c b/progs/demos/spectex.c index 6ab1191579..c1dada9d63 100644 --- a/progs/demos/spectex.c +++ b/progs/demos/spectex.c @@ -239,13 +239,9 @@ static void ModeMenu(int entry) int main( int argc, char *argv[] ) { - - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 300, 300 ); - + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow( "spectex" ); Init(); diff --git a/progs/demos/spriteblast.c b/progs/demos/spriteblast.c index d73b680b79..36e226e1d0 100644 --- a/progs/demos/spriteblast.c +++ b/progs/demos/spriteblast.c @@ -493,6 +493,8 @@ int main(int argc, char **argv) { int i; + + glutInitWindowSize(600,300); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); @@ -506,8 +508,6 @@ main(int argc, char **argv) linearFiltering = 0; } } - glutInitWindowPosition(0, 0); - glutInitWindowSize(600,300); glutCreateWindow("sprite blast"); glewInit(); glutReshapeFunc(reshape); diff --git a/progs/demos/teapot.c b/progs/demos/teapot.c index 6bf6e06409..04a675f36e 100644 --- a/progs/demos/teapot.c +++ b/progs/demos/teapot.c @@ -638,7 +638,6 @@ int main(int ac, char **av) } */ - glutInitWindowPosition(0,0); glutInitWindowSize(WIDTH,HEIGHT); glutInit(&ac,av); diff --git a/progs/demos/terrain.c b/progs/demos/terrain.c index be78ea4950..a72c8d3cae 100644 --- a/progs/demos/terrain.c +++ b/progs/demos/terrain.c @@ -8,6 +8,7 @@ * based on a Mikael SkiZoWalker's (MoDEL) / France (Skizo@Hol.Fr) demo */ +#include <assert.h> #include <stdio.h> #include <math.h> #include <stdlib.h> @@ -559,12 +560,14 @@ loadpic(void) FILE *FilePic; int i, tmp; GLenum gluerr; + size_t result; if ((FilePic = fopen("terrain.dat", "r")) == NULL) { fprintf(stderr, "Error loading terrain.dat\n"); exit(-1); } - fread(bufferter, 256 * 256, 1, FilePic); + result = fread(bufferter, 256 * 256, 1, FilePic); + assert(result == 1); fclose(FilePic); for (i = 0; i < (256 * 256); i++) { @@ -623,7 +626,6 @@ init(void) int main(int ac, char **av) { - glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); diff --git a/progs/demos/tessdemo.c b/progs/demos/tessdemo.c index f71cea1274..8b988e36c1 100644 --- a/progs/demos/tessdemo.c +++ b/progs/demos/tessdemo.c @@ -503,10 +503,9 @@ int main( int argc, char **argv ) usage(); + glutInitWindowSize( 400, 400 ); glutInit( &argc, argv ); glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB ); - glutInitWindowPosition(0, 0); - glutInitWindowSize( 400, 400 ); glutCreateWindow( argv[0] ); /* GH: Bit of a hack... diff --git a/progs/demos/texcyl.c b/progs/demos/texcyl.c index 0e6089bced..4df97ec4f5 100644 --- a/progs/demos/texcyl.c +++ b/progs/demos/texcyl.c @@ -261,10 +261,8 @@ static void Init( int argc, char *argv[] ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); glutInitWindowSize( 400, 400 ); - glutInitWindowPosition( 0, 0 ); - + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); Win = glutCreateWindow(argv[0] ); diff --git a/progs/demos/texenv.c b/progs/demos/texenv.c index c5a8b13f35..260ca8718f 100644 --- a/progs/demos/texenv.c +++ b/progs/demos/texenv.c @@ -765,6 +765,7 @@ int main( int argc, char *argv[] ) GLboolean info = GL_FALSE; int i; + glutInitWindowSize( winWidth, winHeight ); glutInit( &argc, argv ); for ( i = 1 ; i < argc ; i++ ) { @@ -786,8 +787,6 @@ int main( int argc, char *argv[] ) glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE ); } - glutInitWindowSize( winWidth, winHeight ); - glutInitWindowPosition( 0, 0 ); Win = glutCreateWindow( "Texture Environment Test" ); initialize(); diff --git a/progs/demos/textures.c b/progs/demos/textures.c index b7bf135d21..1415ef1c43 100644 --- a/progs/demos/textures.c +++ b/progs/demos/textures.c @@ -57,7 +57,7 @@ Idle(void) { Xrot = glutGet(GLUT_ELAPSED_TIME) * 0.02; Yrot = glutGet(GLUT_ELAPSED_TIME) * 0.04; - //Zrot += 2.0; + /* Zrot += 2.0; */ glutPostRedisplay(); } @@ -356,9 +356,8 @@ Usage(void) int main(int argc, char *argv[]) { - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); glutInitWindowSize(700, 700); + glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); Win = glutCreateWindow(argv[0]); glutReshapeFunc(Reshape); diff --git a/progs/demos/trispd.c b/progs/demos/trispd.c index 165d088e3d..c07c340947 100644 --- a/progs/demos/trispd.c +++ b/progs/demos/trispd.c @@ -227,15 +227,12 @@ static void Help( const char *program ) int main( int argc, char *argv[] ) { - printf("For options: %s -help\n", argv[0]); - glutInit( &argc, argv ); glutInitWindowSize( (int) Width, (int) Height ); - glutInitWindowPosition( 0, 0 ); - + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow( argv[0] ); + printf("For options: %s -help\n", argv[0]); if (argc==2 && strcmp(argv[1],"-help")==0) { Help(argv[0]); return 0; diff --git a/progs/demos/tunnel.c b/progs/demos/tunnel.c index 6981da3298..efc007c79a 100644 --- a/progs/demos/tunnel.c +++ b/progs/demos/tunnel.c @@ -491,7 +491,6 @@ main(int ac, char **av) fprintf(stderr, "Tunnel V1.5\nWritten by David Bucciarelli (tech.hmw@plus.it)\n"); - glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTH, HEIGHT); glutInit(&ac, av); diff --git a/progs/demos/tunnel2.c b/progs/demos/tunnel2.c index 0288ea0f8c..f15da95b18 100644 --- a/progs/demos/tunnel2.c +++ b/progs/demos/tunnel2.c @@ -559,7 +559,6 @@ main(int ac, char **av) fprintf(stderr, "Tunnel2 V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n"); - glutInitWindowPosition(0, 0); glutInitWindowSize(WIDTHC0, HEIGHTC0); glutInit(&ac, av); diff --git a/progs/demos/vao_demo.c b/progs/demos/vao_demo.c index 206e06fc6c..5ce07ecc63 100644 --- a/progs/demos/vao_demo.c +++ b/progs/demos/vao_demo.c @@ -317,9 +317,8 @@ static void Init( void ) int main( int argc, char *argv[] ) { - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); glutInitWindowSize( Width, Height ); + glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); Win = glutCreateWindow( "GL_APPLE_vertex_array_object demo" ); glutReshapeFunc( Reshape ); diff --git a/progs/demos/winpos.c b/progs/demos/winpos.c index 13a9c7e9a8..f935f9bee0 100644 --- a/progs/demos/winpos.c +++ b/progs/demos/winpos.c @@ -96,9 +96,8 @@ static void init( void ) int main( int argc, char *argv[] ) { - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); glutInitWindowSize(500, 500); + glutInit(&argc, argv); glutInitDisplayMode( GLUT_RGB ); if (glutCreateWindow("winpos") <= 0) { diff --git a/progs/egl/demo1.c b/progs/egl/demo1.c index 34a516e72f..d892734ee5 100644 --- a/progs/egl/demo1.c +++ b/progs/egl/demo1.c @@ -114,6 +114,7 @@ main(int argc, char *argv[]) PrintConfigs(d, configs, numConfigs); + eglBindAPI(EGL_OPENGL_API); ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); if (ctx == EGL_NO_CONTEXT) { printf("failed to create context\n"); diff --git a/progs/egl/demo2.c b/progs/egl/demo2.c index 3994656721..b9e92f62ac 100644 --- a/progs/egl/demo2.c +++ b/progs/egl/demo2.c @@ -111,11 +111,7 @@ main(int argc, char *argv[]) EGL_HEIGHT, 500, EGL_NONE }; - const EGLint screenAttribs[] = { - EGL_WIDTH, 1024, - EGL_HEIGHT, 768, - EGL_NONE - }; + EGLint screenAttribs[32]; EGLModeMESA mode; EGLScreenMESA screen; EGLint count; @@ -149,6 +145,7 @@ main(int argc, char *argv[]) eglGetScreensMESA(d, &screen, 1, &count); eglGetModesMESA(d, screen, &mode, 1, &count); + eglBindAPI(EGL_OPENGL_API); ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); if (ctx == EGL_NO_CONTEXT) { printf("failed to create context\n"); @@ -169,6 +166,13 @@ main(int argc, char *argv[]) b = eglMakeCurrent(d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + i = 0; + screenAttribs[i++] = EGL_WIDTH; + eglGetModeAttribMESA(d, mode, EGL_WIDTH, &screenAttribs[i++]); + screenAttribs[i++] = EGL_HEIGHT; + eglGetModeAttribMESA(d, mode, EGL_HEIGHT, &screenAttribs[i++]); + screenAttribs[i] = EGL_NONE; + screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); if (screen_surf == EGL_NO_SURFACE) { printf("failed to create screen surface\n"); diff --git a/progs/egl/demo3.c b/progs/egl/demo3.c index 0665fd0516..64b9ee652c 100644 --- a/progs/egl/demo3.c +++ b/progs/egl/demo3.c @@ -564,11 +564,8 @@ main(int argc, char *argv[]) EGLint numConfigs, count; EGLBoolean b; const GLubyte *bitmap; - const EGLint screenAttribs[] = { - EGL_WIDTH, 1024, - EGL_HEIGHT, 768, - EGL_NONE - }; + EGLint screenAttribs[32]; + EGLint i; EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); assert(d); @@ -590,12 +587,20 @@ main(int argc, char *argv[]) eglGetScreensMESA(d, &screen, 1, &count); eglGetModesMESA(d, screen, &mode, 1, &count); + eglBindAPI(EGL_OPENGL_API); ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); if (ctx == EGL_NO_CONTEXT) { printf("failed to create context\n"); return 0; } + i = 0; + screenAttribs[i++] = EGL_WIDTH; + eglGetModeAttribMESA(d, mode, EGL_WIDTH, &screenAttribs[i++]); + screenAttribs[i++] = EGL_HEIGHT; + eglGetModeAttribMESA(d, mode, EGL_HEIGHT, &screenAttribs[i++]); + screenAttribs[i] = EGL_NONE; + screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); if (screen_surf == EGL_NO_SURFACE) { printf("failed to create screen surface\n"); diff --git a/progs/egl/eglgears.c b/progs/egl/eglgears.c index 052d0f9e25..63490953ae 100644 --- a/progs/egl/eglgears.c +++ b/progs/egl/eglgears.c @@ -374,7 +374,8 @@ main(int argc, char *argv[]) EGLint screenAttribs[10]; EGLModeMESA mode[MAX_MODES]; EGLScreenMESA screen; - EGLint count, chosenMode; + EGLint count; + EGLint chosenMode = 0; GLboolean printInfo = GL_FALSE; EGLint width = 0, height = 0; @@ -425,6 +426,7 @@ main(int argc, char *argv[]) } printf("eglgears: Using screen mode/size %d: %d x %d\n", chosenMode, width, height); + eglBindAPI(EGL_OPENGL_API); ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); if (ctx == EGL_NO_CONTEXT) { printf("eglgears: failed to create context\n"); diff --git a/progs/egl/eglscreen.c b/progs/egl/eglscreen.c index 47b3ce3366..520f76ea03 100644 --- a/progs/egl/eglscreen.c +++ b/progs/egl/eglscreen.c @@ -52,7 +52,8 @@ main(int argc, char *argv[]) EGLint screenAttribs[10]; EGLModeMESA mode[MAX_MODES]; EGLScreenMESA screen; - EGLint count, chosenMode; + EGLint count; + EGLint chosenMode = 0; EGLint width = 0, height = 0; d = eglGetDisplay(EGL_DEFAULT_DISPLAY); diff --git a/progs/egl/egltri.c b/progs/egl/egltri.c index 9bbc3cddaf..006e06eb03 100644 --- a/progs/egl/egltri.c +++ b/progs/egl/egltri.c @@ -208,6 +208,7 @@ int main(int argc, char *argv[]) } printf("egltri: Using screen mode/size %d: %d x %d\n", chosenMode, width, height); + eglBindAPI(EGL_OPENGL_API); ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); if (ctx == EGL_NO_CONTEXT) { printf("egltri: failed to create context\n"); diff --git a/progs/egl/xegl_tri.c b/progs/egl/xegl_tri.c index 65f352ddfa..1f1a005a21 100644 --- a/progs/egl/xegl_tri.c +++ b/progs/egl/xegl_tri.c @@ -120,6 +120,7 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, EGL_DEPTH_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; @@ -138,7 +139,8 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, scrnum = DefaultScreen( x_dpy ); root = RootWindow( x_dpy, scrnum ); - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs) || + !num_configs) { printf("Error: couldn't get an EGL visual config\n"); exit(1); } diff --git a/progs/egl/xeglbindtex.c b/progs/egl/xeglbindtex.c index fdd9fe2b87..de0ede92ca 100644 --- a/progs/egl/xeglbindtex.c +++ b/progs/egl/xeglbindtex.c @@ -53,6 +53,7 @@ make_pbuffer(int width, int height) EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE, + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; EGLint pbuf_attribs[] = { @@ -65,7 +66,8 @@ make_pbuffer(int width, int height) EGLConfig config; EGLint num_configs; - if (!eglChooseConfig(dpy, config_attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig(dpy, config_attribs, &config, 1, &num_configs) || + !num_configs) { printf("Error: couldn't get an EGL visual config for pbuffer\n"); exit(1); } @@ -77,8 +79,6 @@ make_pbuffer(int width, int height) printf("failed to allocate pbuffer\n"); exit(1); } - - glGenTextures(1, &tex_pbuf); } static void @@ -112,6 +112,8 @@ use_pbuffer(void) glTranslatef(0.0, 0.0, -5.0); glClearColor(0.2, 0.2, 0.2, 0.0); + + glGenTextures(1, &tex_pbuf); } } @@ -126,6 +128,7 @@ make_window(Display *x_dpy, const char *name, EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8, EGL_DEPTH_SIZE, 8, + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; @@ -142,7 +145,8 @@ make_window(Display *x_dpy, const char *name, scrnum = DefaultScreen( x_dpy ); root = RootWindow( x_dpy, scrnum ); - if (!eglChooseConfig(dpy, attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig(dpy, attribs, &config, 1, &num_configs) || + !num_configs) { printf("Error: couldn't get an EGL visual config\n"); exit(1); } diff --git a/progs/egl/xeglthreads.c b/progs/egl/xeglthreads.c index 508dbc0943..5787faecb9 100644 --- a/progs/egl/xeglthreads.c +++ b/progs/egl/xeglthreads.c @@ -467,6 +467,7 @@ create_window(struct winthread *wt, EGLContext shareCtx) EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, EGL_DEPTH_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; EGLConfig config; EGLint num_configs; @@ -484,7 +485,8 @@ create_window(struct winthread *wt, EGLContext shareCtx) scrnum = DefaultScreen(wt->Dpy); root = RootWindow(wt->Dpy, scrnum); - if (!eglChooseConfig(wt->Display, attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig(wt->Display, attribs, &config, 1, &num_configs) || + !num_configs) { Error("Unable to choose an EGL config"); } diff --git a/progs/fp/SConscript b/progs/fp/SConscript index a78318542c..e209161f32 100644 --- a/progs/fp/SConscript +++ b/progs/fp/SConscript @@ -1,15 +1,4 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = ['$GLUT_LIB']) +Import('*') progs = [ 'fp-tri', @@ -17,14 +6,13 @@ progs = [ 'tri-depth2', 'tri-depthwrite', 'tri-depthwrite2', - 'tri-inv', 'tri-param', 'tri-tex', 'point-position', ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = [prog + '.c'], ) diff --git a/progs/fp/fp-tri.c b/progs/fp/fp-tri.c index 52a8fcfc22..70676d4c40 100644 --- a/progs/fp/fp-tri.c +++ b/progs/fp/fp-tri.c @@ -73,7 +73,7 @@ static void Init( void ) GLuint Texture; GLint errno; GLuint prognum; - char buf[4096]; + char buf[50000]; GLuint sz; FILE *f; @@ -176,6 +176,17 @@ static void Init( void ) } + { + const float Ambient[4] = { 0.0, 1.0, 0.0, 0.0 }; + const float Diffuse[4] = { 1.0, 0.0, 0.0, 0.0 }; + const float Specular[4] = { 0.0, 0.0, 1.0, 0.0 }; + const float Emission[4] = { 0.0, 0.0, 0.0, 1.0 }; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, Emission); + } + glClearColor(.1, .3, .5, 0); } @@ -197,7 +208,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/mov-imm.txt b/progs/fp/mov-imm.txt new file mode 100644 index 0000000000..38e48079d0 --- /dev/null +++ b/progs/fp/mov-imm.txt @@ -0,0 +1,3 @@ +!!ARBfp1.0 +MOV result.color, {0.5, 0.8, 0.3, 1.0}; +END diff --git a/progs/fp/mov-param.txt b/progs/fp/mov-param.txt new file mode 100644 index 0000000000..13d82fe00b --- /dev/null +++ b/progs/fp/mov-param.txt @@ -0,0 +1,4 @@ +!!ARBfp1.0 +PARAM Diffuse = state.material.diffuse; +MOV result.color, Diffuse; +END diff --git a/progs/fp/point-position.c b/progs/fp/point-position.c index c0963d7a0b..1ae753c1d0 100644 --- a/progs/fp/point-position.c +++ b/progs/fp/point-position.c @@ -55,7 +55,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/tri-depth.c b/progs/fp/tri-depth.c index 5488469e80..a9f3a6a5be 100644 --- a/progs/fp/tri-depth.c +++ b/progs/fp/tri-depth.c @@ -57,7 +57,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/tri-depth2.c b/progs/fp/tri-depth2.c index 6ed2307115..8c4336817b 100644 --- a/progs/fp/tri-depth2.c +++ b/progs/fp/tri-depth2.c @@ -59,7 +59,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/tri-depthwrite.c b/progs/fp/tri-depthwrite.c index 8e4f3e6245..7b9d70f292 100644 --- a/progs/fp/tri-depthwrite.c +++ b/progs/fp/tri-depthwrite.c @@ -55,7 +55,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/tri-depthwrite2.c b/progs/fp/tri-depthwrite2.c index 3c0b4d30c9..599949551d 100644 --- a/progs/fp/tri-depthwrite2.c +++ b/progs/fp/tri-depthwrite2.c @@ -55,7 +55,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/tri-inv.c b/progs/fp/tri-inv.c deleted file mode 100644 index 7e8d8c5ce2..0000000000 --- a/progs/fp/tri-inv.c +++ /dev/null @@ -1,111 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "INV result.color, fragment.color; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/tri-param.c b/progs/fp/tri-param.c index 57443d71bd..26a804d4b3 100644 --- a/progs/fp/tri-param.c +++ b/progs/fp/tri-param.c @@ -54,7 +54,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/fp/tri-tex.c b/progs/fp/tri-tex.c index 1dbbb201ce..64299e9453 100644 --- a/progs/fp/tri-tex.c +++ b/progs/fp/tri-tex.c @@ -76,7 +76,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/glsl/CH11-bumpmaptex.frag b/progs/glsl/CH11-bumpmaptex.frag new file mode 100644 index 0000000000..b1f93b784d --- /dev/null +++ b/progs/glsl/CH11-bumpmaptex.frag @@ -0,0 +1,47 @@ +// +// Fragment shader for procedural bumps +// +// Authors: John Kessenich, Randi Rost +// +// Copyright (c) 2002-2006 3Dlabs Inc. Ltd. +// +// See 3Dlabs-License.txt for license information +// +// Texture mapping/modulation added by Brian Paul +// + +varying vec3 LightDir; +varying vec3 EyeDir; + +uniform float BumpDensity; // = 16.0 +uniform float BumpSize; // = 0.15 +uniform float SpecularFactor; // = 0.5 + +sampler2D Tex; + +void main() +{ + vec3 ambient = vec3(0.25); + vec3 litColor; + vec2 c = BumpDensity * gl_TexCoord[0].st; + vec2 p = fract(c) - vec2(0.5); + + float d, f; + d = p.x * p.x + p.y * p.y; + f = inversesqrt(d + 1.0); + + if (d >= BumpSize) + { p = vec2(0.0); f = 1.0; } + + vec3 SurfaceColor = texture2D(Tex, gl_TexCoord[0].st).xyz; + + vec3 normDelta = vec3(p.x, p.y, 1.0) * f; + litColor = SurfaceColor * (ambient + max(dot(normDelta, LightDir), 0.0)); + vec3 reflectDir = reflect(LightDir, normDelta); + + float spec = max(dot(EyeDir, reflectDir), 0.0); + spec *= SpecularFactor; + litColor = min(litColor + spec, vec3(1.0)); + + gl_FragColor = vec4(litColor, 1.0); +} diff --git a/progs/glsl/CH18-mandel.frag b/progs/glsl/CH18-mandel.frag index a472d81252..a972d68bcf 100644 --- a/progs/glsl/CH18-mandel.frag +++ b/progs/glsl/CH18-mandel.frag @@ -31,7 +31,7 @@ void main() float iter; // for (iter = 0.0; iter < MaxIterations && r2 < 4.0; ++iter) - for (iter = 0.0; iter < 12 && r2 < 4.0; ++iter) + for (iter = 0.0; iter < 12.0 && r2 < 4.0; ++iter) { float tempreal = real; diff --git a/progs/glsl/SConscript b/progs/glsl/SConscript index 7a4549cd70..8f2ebcf69c 100644 --- a/progs/glsl/SConscript +++ b/progs/glsl/SConscript @@ -1,23 +1,5 @@ Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - progs = [ 'array', 'bitmap', @@ -48,7 +30,7 @@ progs = [ ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = prog + '.c', ) diff --git a/progs/glsl/bump.c b/progs/glsl/bump.c index 87669aec73..e31afab939 100644 --- a/progs/glsl/bump.c +++ b/progs/glsl/bump.c @@ -12,15 +12,20 @@ #include <GL/glew.h> #include <GL/glut.h> #include "shaderutil.h" +#include "readtex.h" static char *FragProgFile = "CH11-bumpmap.frag"; +static char *FragTexProgFile = "CH11-bumpmaptex.frag"; static char *VertProgFile = "CH11-bumpmap.vert"; +static char *TextureFile = "../images/tile.rgb"; /* program/shader objects */ static GLuint fragShader; +static GLuint fragTexShader; static GLuint vertShader; static GLuint program; +static GLuint texProgram; static struct uniform_info Uniforms[] = { @@ -32,13 +37,26 @@ static struct uniform_info Uniforms[] = { END_OF_UNIFORMS }; +static struct uniform_info TexUniforms[] = { + { "LightPosition", 1, GL_FLOAT_VEC3, { 0.57737, 0.57735, 0.57735, 0.0 }, -1 }, + { "Tex", 1, GL_INT, { 0, 0, 0, 0 }, -1 }, + { "BumpDensity", 1, GL_FLOAT, { 10.0, 0, 0, 0 }, -1 }, + { "BumpSize", 1, GL_FLOAT, { 0.125, 0, 0, 0 }, -1 }, + { "SpecularFactor", 1, GL_FLOAT, { 0.5, 0, 0, 0 }, -1 }, + END_OF_UNIFORMS +}; + static GLint win = 0; static GLfloat xRot = 20.0f, yRot = 0.0f, zRot = 0.0f; -static GLuint tangentAttrib; +static GLint tangentAttrib; +static GLint tangentAttribTex; + +static GLuint Texture; static GLboolean Anim = GL_FALSE; +static GLboolean Textured = GL_FALSE; static void @@ -135,6 +153,11 @@ Redisplay(void) glRotatef(yRot, 0.0f, 1.0f, 0.0f); glRotatef(zRot, 0.0f, 0.0f, 1.0f); + if (Textured) + glUseProgram(texProgram); + else + glUseProgram(program); + Cube(1.5); glPopMatrix(); @@ -163,8 +186,10 @@ static void CleanUp(void) { glDeleteShader(fragShader); + glDeleteShader(fragTexShader); glDeleteShader(vertShader); glDeleteProgram(program); + glDeleteProgram(texProgram); glutDestroyWindow(win); } @@ -181,6 +206,9 @@ Key(unsigned char key, int x, int y) Anim = !Anim; glutIdleFunc(Anim ? Idle : NULL); break; + case 't': + Textured = !Textured; + break; case 'z': zRot += step; break; @@ -254,6 +282,26 @@ Init(void) CheckError(__LINE__); + + /* + * As above, but fragment shader also uses a texture map. + */ + fragTexShader = CompileShaderFile(GL_FRAGMENT_SHADER, FragTexProgFile); + texProgram = LinkShaders(vertShader, fragTexShader); + glUseProgram(texProgram); + assert(glIsProgram(texProgram)); + assert(glIsShader(fragTexShader)); + SetUniformValues(texProgram, TexUniforms); + PrintUniforms(TexUniforms); + + /* + * Load tex image. + */ + glGenTextures(1, &Texture); + glBindTexture(GL_TEXTURE_2D, Texture); + LoadRGBMipmaps(TextureFile, GL_RGB); + + glClearColor(0.4f, 0.4f, 0.8f, 0.0f); glEnable(GL_DEPTH_TEST); @@ -268,10 +316,13 @@ ParseOptions(int argc, char *argv[]) int i; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-fs") == 0) { - FragProgFile = argv[i+1]; + FragProgFile = argv[++i]; } else if (strcmp(argv[i], "-vs") == 0) { - VertProgFile = argv[i+1]; + VertProgFile = argv[++i]; + } + else if (strcmp(argv[i], "-t") == 0) { + TextureFile = argv[++i]; } } } diff --git a/progs/glsl/convolutions.c b/progs/glsl/convolutions.c index c2fb76e1aa..350e61bbdc 100644 --- a/progs/glsl/convolutions.c +++ b/progs/glsl/convolutions.c @@ -369,7 +369,7 @@ static void keyPress(unsigned char key, int x, int y) case 27: exit(0); default: - return; + break; } glutPostRedisplay(); } diff --git a/progs/glsl/deriv.c b/progs/glsl/deriv.c index 265a515715..588246b71a 100644 --- a/progs/glsl/deriv.c +++ b/progs/glsl/deriv.c @@ -27,11 +27,15 @@ static GLuint SphereList, RectList, CurList; static GLint win = 0; static GLboolean anim = GL_TRUE; static GLfloat xRot = 0.0f, yRot = 0.0f; +static GLint WinSize[2]; +static GLint WinSizeUniform = -1; static void Redisplay(void) { + glUniform2iv(WinSizeUniform, 1, WinSize); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); @@ -55,6 +59,8 @@ Idle(void) static void Reshape(int width, int height) { + WinSize[0] = width; + WinSize[1] = height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); @@ -140,6 +146,7 @@ MakeSphere(void) glNewList(SphereList, GL_COMPILE); gluSphere(obj, 2.0f, 30, 15); glEndList(); + gluDeleteQuadric(obj); } @@ -162,8 +169,10 @@ static void Init(void) { static const char *fragShaderText = + "uniform ivec2 WinSize; \n" "void main() {\n" - " gl_FragColor = abs(dFdy(gl_TexCoord[0])) * 50.0;\n" + " vec2 d = dFdy(gl_TexCoord[0].xy) * vec2(WinSize); \n" + " gl_FragColor = vec4(d.x, d.y, 0.0, 1.0);\n" " // gl_FragColor = gl_TexCoord[0];\n" "}\n"; static const char *vertShaderText = @@ -180,6 +189,7 @@ Init(void) program = LinkShaders(vertShader, fragShader); glUseProgram(program); + WinSizeUniform = glGetUniformLocation(program, "WinSize"); /*assert(glGetError() == 0);*/ @@ -219,8 +229,10 @@ ParseOptions(int argc, char *argv[]) int main(int argc, char *argv[]) { + WinSize[0] = WinSize[1] = 200; + glutInit(&argc, argv); - glutInitWindowSize(200, 200); + glutInitWindowSize(WinSize[0], WinSize[1]); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); win = glutCreateWindow(argv[0]); glewInit(); diff --git a/progs/glsl/multinoise.c b/progs/glsl/multinoise.c index 0d4026e29c..d504ba1cc4 100644 --- a/progs/glsl/multinoise.c +++ b/progs/glsl/multinoise.c @@ -22,22 +22,22 @@ static const char *FragShaderText[ 4 ] = { "void main()\n" "{\n" " gl_FragColor.rgb = noise3( gl_TexCoord[ 0 ].w ) * 0.5 + 0.5;\n" - " gl_FragColor.a = 1;\n" + " gl_FragColor.a = 1.0;\n" "}\n", "void main()\n" "{\n" " gl_FragColor.rgb = noise3( gl_TexCoord[ 0 ].xw ) * 0.5 + 0.5;\n" - " gl_FragColor.a = 1;\n" + " gl_FragColor.a = 1.0;\n" "}\n", "void main()\n" "{\n" " gl_FragColor.rgb = noise3( gl_TexCoord[ 0 ].xyw ) * 0.5 + 0.5;\n" - " gl_FragColor.a = 1;\n" + " gl_FragColor.a = 1.0;\n" "}\n", "void main()\n" "{\n" " gl_FragColor.rgb = noise3( gl_TexCoord[ 0 ].xyzw ) * 0.5 + 0.5;\n" - " gl_FragColor.a = 1;\n" + " gl_FragColor.a = 1.0;\n" "}\n" }; @@ -125,6 +125,7 @@ Key(unsigned char key, int x, int y) case 'a': Anim = !Anim; glutIdleFunc(Anim ? Idle : NULL); + break; case 's': Slice -= step; break; @@ -193,7 +194,7 @@ LoadAndCompileShader(GLuint shader, const char *text) GLchar log[1000]; GLsizei len; glGetShaderInfoLog(shader, 1000, &len, log); - fprintf(stderr, "noise: problem compiling shader: %s\n", log); + fprintf(stderr, "multinoise: problem compiling shader: %s\n", log); exit(1); } else { diff --git a/progs/glsl/multitex.c b/progs/glsl/multitex.c index bf46fd5210..49b32253ee 100644 --- a/progs/glsl/multitex.c +++ b/progs/glsl/multitex.c @@ -369,12 +369,9 @@ InitPrograms(void) static void InitGL(void) { - const char *version = (const char *) glGetString(GL_VERSION); + if (!ShadersSupported()) + exit(1); - if (version[0] != '2' || version[1] != '.') { - printf("Warning: this program expects OpenGL 2.0\n"); - /*exit(1);*/ - } printf("GL_RENDERER = %s\n",(const char *) glGetString(GL_RENDERER)); printf("Usage:\n"); printf(" a - toggle arrays vs. immediate mode rendering\n"); diff --git a/progs/glsl/noise.c b/progs/glsl/noise.c index fdab263ea6..1148580ff4 100644 --- a/progs/glsl/noise.c +++ b/progs/glsl/noise.c @@ -28,7 +28,7 @@ static const char *FragShaderText = " vec4 p;\n" " p.xy = gl_TexCoord[0].xy;\n" " p.z = Slice;\n" - " p.w = 0;\n" + " p.w = 0.0;\n" " vec4 n = noise4(p * scale);\n" " gl_FragColor = n * Scale + Bias;\n" "}\n"; @@ -119,6 +119,7 @@ Key(unsigned char key, int x, int y) case 'a': Anim = !Anim; glutIdleFunc(Anim ? Idle : NULL); + break; case 's': Slice -= step; break; diff --git a/progs/glsl/shtest.c b/progs/glsl/shtest.c index 628a7dd5b9..7b1917be1c 100644 --- a/progs/glsl/shtest.c +++ b/progs/glsl/shtest.c @@ -492,9 +492,8 @@ ReadConfigFile(const char *filename, struct config_file *conf) conf->num_uniforms = 0; /* ugly but functional parser */ - while (!feof(f)) { - fgets(line, sizeof(line), f); - if (!feof(f) && line[0]) { + while (fgets(line, sizeof(line), f) != NULL) { + if (line[0]) { if (strncmp(line, "vs ", 3) == 0) { VertShaderFile = strdup(line + 3); VertShaderFile[strlen(VertShaderFile) - 1] = 0; @@ -550,6 +549,10 @@ ReadConfigFile(const char *filename, struct config_file *conf) type = TypeFromName(typeName); + if (strlen(name) + 1 > sizeof(conf->uniforms[conf->num_uniforms].name)) { + fprintf(stderr, "string overflow\n"); + exit(1); + } strcpy(conf->uniforms[conf->num_uniforms].name, name); conf->uniforms[conf->num_uniforms].value[0] = v1; conf->uniforms[conf->num_uniforms].value[1] = v2; @@ -627,7 +630,7 @@ Init(void) NumAttribs = GetAttribs(Program, Attribs); PrintAttribs(Attribs); - //assert(glGetError() == 0); + /* assert(glGetError() == 0); */ glClearColor(0.4f, 0.4f, 0.8f, 0.0f); diff --git a/progs/glsl/texaaline.c b/progs/glsl/texaaline.c index 2e4f932ad6..00edab7310 100644 --- a/progs/glsl/texaaline.c +++ b/progs/glsl/texaaline.c @@ -310,8 +310,8 @@ MakeMipmap(void) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, 4); - ////glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 5); + /* glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, 4); */ + /* glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 5); */ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); #undef SZ diff --git a/progs/glsl/texdemo1.c b/progs/glsl/texdemo1.c index 5b1913a722..2076e6aef9 100644 --- a/progs/glsl/texdemo1.c +++ b/progs/glsl/texdemo1.c @@ -400,11 +400,8 @@ InitPrograms(void) static void Init(GLboolean useImageFiles) { - const char *version = (const char *) glGetString(GL_VERSION); - - if (version[0] != '2' || version[1] != '.') { - printf("Warning: this program expects OpenGL 2.0\n"); - /*exit(1);*/ + if (!ShadersSupported()) { + exit(1); } printf("GL_RENDERER = %s\n",(const char *) glGetString(GL_RENDERER)); diff --git a/progs/glsl/trirast.c b/progs/glsl/trirast.c index 53bd91ef97..857342636d 100644 --- a/progs/glsl/trirast.c +++ b/progs/glsl/trirast.c @@ -179,9 +179,9 @@ Init(void) "\n" "void main() {\n" " vec2 p = gl_FragCoord.xy; \n" - " if (crs(v1 - v0, p - v0) >= 0 && \n" - " crs(v2 - v1, p - v1) >= 0 && \n" - " crs(v0 - v2, p - v2) >= 0) \n" + " if (crs(v1 - v0, p - v0) >= 0.0 && \n" + " crs(v2 - v1, p - v1) >= 0.0 && \n" + " crs(v0 - v2, p - v2) >= 0.0) \n" " gl_FragColor = vec4(1.0); \n" " else \n" " gl_FragColor = vec4(0.5); \n" diff --git a/progs/glsl/vert-tex.c b/progs/glsl/vert-tex.c index 4c8bfa587a..2b93c78888 100644 --- a/progs/glsl/vert-tex.c +++ b/progs/glsl/vert-tex.c @@ -40,15 +40,6 @@ static GLboolean Anim = GL_TRUE; static GLboolean WireFrame = GL_TRUE; static GLfloat xRot = -70.0f, yRot = 0.0f, zRot = 0.0f; - -/* value[0] = tex unit */ -static struct uniform_info Uniforms[] = { - { "tex1", 1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 }, - END_OF_UNIFORMS -}; - - - static void Idle(void) { diff --git a/progs/objviewer/.gitignore b/progs/objviewer/.gitignore new file mode 100644 index 0000000000..ff094f833e --- /dev/null +++ b/progs/objviewer/.gitignore @@ -0,0 +1,8 @@ +extfuncs.h +objview +readtex.c +readtex.h +shaderutil.c +shaderutil.h +trackball.c +trackball.h diff --git a/progs/openvg/demos/eglcommon.c b/progs/openvg/demos/eglcommon.c index bacd5685d7..0316e596c6 100644 --- a/progs/openvg/demos/eglcommon.c +++ b/progs/openvg/demos/eglcommon.c @@ -42,6 +42,7 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENVG_BIT, EGL_NONE }; @@ -60,13 +61,13 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, scrnum = DefaultScreen( x_dpy ); root = RootWindow( x_dpy, scrnum ); - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs) || + !num_configs) { printf("Error: couldn't get an EGL visual config\n"); exit(1); } assert(config); - assert(num_configs > 0); if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { printf("Error: eglGetConfigAttrib() failed\n"); diff --git a/progs/openvg/demos/lion.c b/progs/openvg/demos/lion.c index 7224fed399..adb269bfd8 100644 --- a/progs/openvg/demos/lion.c +++ b/progs/openvg/demos/lion.c @@ -67,6 +67,7 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENVG_BIT, EGL_NONE }; @@ -85,13 +86,13 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, scrnum = DefaultScreen( x_dpy ); root = RootWindow( x_dpy, scrnum ); - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs) || + !num_configs) { printf("Error: couldn't get an EGL visual config\n"); exit(1); } assert(config); - assert(num_configs > 0); if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { printf("Error: eglGetConfigAttrib() failed\n"); diff --git a/progs/openvg/trivial/eglcommon.c b/progs/openvg/trivial/eglcommon.c index bacd5685d7..0316e596c6 100644 --- a/progs/openvg/trivial/eglcommon.c +++ b/progs/openvg/trivial/eglcommon.c @@ -42,6 +42,7 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENVG_BIT, EGL_NONE }; @@ -60,13 +61,13 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy, scrnum = DefaultScreen( x_dpy ); root = RootWindow( x_dpy, scrnum ); - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { + if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs) || + !num_configs) { printf("Error: couldn't get an EGL visual config\n"); exit(1); } assert(config); - assert(num_configs > 0); if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { printf("Error: eglGetConfigAttrib() failed\n"); diff --git a/progs/osdemos/Makefile b/progs/osdemos/Makefile index 023ea02ae2..f53515cb0a 100644 --- a/progs/osdemos/Makefile +++ b/progs/osdemos/Makefile @@ -5,7 +5,7 @@ include $(TOP)/configs/current INCDIR = $(TOP)/include -OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS) +OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS) OSMESA16_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -lOSMesa16 -l$(GLU_LIB) \ -l$(GL_LIB) $(APP_LIB_DEPS) @@ -13,12 +13,6 @@ OSMESA16_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -lOSMesa16 -l$(GLU_LIB) \ OSMESA32_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -lOSMesa32 -l$(GLU_LIB) \ -l$(GL_LIB) $(APP_LIB_DEPS) -LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) \ - $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) \ - $(APP_LIB_DEPS) - PROGS = \ osdemo \ ostest1 @@ -30,11 +24,6 @@ PROGS = \ .SUFFIXES: .c -# make executable from .c file: -.c: $(LIB_DEP) readtex.o - $(CC) -I$(INCDIR) $(CFLAGS) $(LDFLAGS) $< readtex.o $(LIBS) -o $@ - - ##### TARGETS ##### default: readtex.o $(PROGS) diff --git a/progs/perf/SConscript b/progs/perf/SConscript index a5ec9a7c2a..691478ab64 100644 --- a/progs/perf/SConscript +++ b/progs/perf/SConscript @@ -1,11 +1,4 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) +Import('*') progs = [ 'copytex', @@ -21,7 +14,7 @@ progs = [ ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = [ prog + '.c', diff --git a/progs/perf/genmipmap.c b/progs/perf/genmipmap.c index 4b7d6ad155..20e2fa3410 100644 --- a/progs/perf/genmipmap.c +++ b/progs/perf/genmipmap.c @@ -27,6 +27,7 @@ */ #include <string.h> +#include <stdio.h> #include "glmain.h" #include "common.h" @@ -53,6 +54,11 @@ static const struct vertex vertices[1] = { void PerfInit(void) { + if (!PerfExtensionSupported("GL_ARB_framebuffer_object")) { + printf("Sorry, this test requires GL_ARB_framebuffer_object\n"); + exit(1); + } + /* setup VBO w/ vertex data */ glGenBuffersARB(1, &VBO); glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); diff --git a/progs/rbug/bin_to_bmp.c b/progs/rbug/bin_to_bmp.c index cdae3486ce..49a5416787 100644 --- a/progs/rbug/bin_to_bmp.c +++ b/progs/rbug/bin_to_bmp.c @@ -25,8 +25,10 @@ #include "pipe/p_compiler.h" #include "pipe/p_format.h" #include "pipe/p_state.h" +#include "util/u_format.h" #include "util/u_memory.h" #include "util/u_debug.h" +#include "util/u_format.h" #include "util/u_network.h" #include "util/u_tile.h" @@ -54,10 +56,7 @@ static void dump(unsigned width, unsigned height, unsigned src_stride, enum pipe_format src_format, uint8_t *data, unsigned src_size) { - struct pipe_format_block src_block; - enum pipe_format dst_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - struct pipe_format_block dst_block; unsigned dst_stride; unsigned dst_size; float *rgba; @@ -65,20 +64,17 @@ static void dump(unsigned width, unsigned height, char filename[512]; { - pf_get_block(src_format, &src_block); - assert(src_stride >= pf_get_stride(&src_block, width)); - assert(src_size >= pf_get_2d_size(&src_block, src_stride, width)); + assert(src_stride >= util_format_get_stride(src_format, width)); } { - pf_get_block(dst_format, &dst_block); - dst_stride = pf_get_stride(&dst_block, width); - dst_size = pf_get_2d_size(&dst_block, dst_stride, width); + dst_stride = util_format_get_stride(dst_format, width); + dst_size = util_format_get_2d_size(dst_format, dst_stride, width); rgba = MALLOC(dst_size); } util_snprintf(filename, 512, "%s.bmp", pf_name(src_format)); - if (pf_is_compressed(src_format)) { + if (util_format_is_compressed(src_format)) { debug_printf("skipping: %s\n", filename); return; } diff --git a/progs/rbug/simple_server.c b/progs/rbug/simple_server.c index 04380c3310..3a842c06c4 100644 --- a/progs/rbug/simple_server.c +++ b/progs/rbug/simple_server.c @@ -29,7 +29,7 @@ #include "rbug/rbug.h" -static void wait() +static void rbug_wait() { int s = u_socket_listen_on_port(13370); int c = u_socket_accept(s); @@ -57,6 +57,6 @@ static void wait() int main(int argc, char** argv) { - wait(); + rbug_wait(); return 0; } diff --git a/progs/rbug/tex_dump.c b/progs/rbug/tex_dump.c index f9e06ee994..963f8eeede 100644 --- a/progs/rbug/tex_dump.c +++ b/progs/rbug/tex_dump.c @@ -27,6 +27,7 @@ #include "pipe/p_state.h" #include "util/u_memory.h" #include "util/u_debug.h" +#include "util/u_format.h" #include "util/u_network.h" #include "util/u_tile.h" #include "rbug/rbug.h" @@ -49,7 +50,7 @@ static void dump(rbug_texture_t tex, util_snprintf(filename, 512, "%llu_%s_%u.bmp", (unsigned long long)tex, pf_name(info->format), mip); - if (pf_is_compressed(info->format)) { + if (util_format_is_compressed(info->format)) { debug_printf("skipping: %s\n", filename); return; } diff --git a/progs/redbook/SConscript b/progs/redbook/SConscript index 242cb6647f..24d7cff1b6 100644 --- a/progs/redbook/SConscript +++ b/progs/redbook/SConscript @@ -1,23 +1,5 @@ Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - progs = [ 'aaindex', 'aapoly', @@ -85,7 +67,7 @@ progs = [ ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = prog + '.c', ) diff --git a/progs/redbook/aaindex.c b/progs/redbook/aaindex.c index 7dbc7b4b9b..6011ec44b6 100644 --- a/progs/redbook/aaindex.c +++ b/progs/redbook/aaindex.c @@ -56,7 +56,7 @@ static float rotAngle = 0.; * at RAMP1START, and a blue color ramp starting * at RAMP2START. The ramps must be a multiple of 16. */ -void init(void) +static void init(void) { int i; @@ -76,7 +76,7 @@ void init(void) /* Draw 2 diagonal lines to form an X */ -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -101,7 +101,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -117,7 +117,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'r': diff --git a/progs/redbook/aapoly.c b/progs/redbook/aapoly.c index 757f0f48c4..b7b2b27090 100644 --- a/progs/redbook/aapoly.c +++ b/progs/redbook/aapoly.c @@ -59,7 +59,7 @@ static void init(void) #define NFACE 6 #define NVERT 8 -void drawCube(GLdouble x0, GLdouble x1, GLdouble y0, GLdouble y1, +static void drawCube(GLdouble x0, GLdouble x1, GLdouble y0, GLdouble y1, GLdouble z0, GLdouble z1) { static GLfloat v[8][3]; @@ -101,7 +101,7 @@ void drawCube(GLdouble x0, GLdouble x1, GLdouble y0, GLdouble y1, /* Note: polygons must be drawn from front to back * for proper blending. */ -void display(void) +static void display(void) { if (polySmooth) { glClear (GL_COLOR_BUFFER_BIT); @@ -126,7 +126,7 @@ void display(void) glFlush (); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -137,7 +137,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/redbook/aargb.c b/progs/redbook/aargb.c index f51984170e..0021b549c2 100644 --- a/progs/redbook/aargb.c +++ b/progs/redbook/aargb.c @@ -51,7 +51,7 @@ static float rotAngle = 0.; * blending, hint, and line width. Print out implementation * specific info on line width granularity and width. */ -void init(void) +static void init(void) { GLfloat values[2]; glGetFloatv (GL_LINE_WIDTH_GRANULARITY, values); @@ -72,7 +72,7 @@ void init(void) /* Draw 2 diagonal lines to form an X */ -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -97,7 +97,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); @@ -113,7 +113,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'r': diff --git a/progs/redbook/accanti.c b/progs/redbook/accanti.c index 12ca16f7a5..d1b2567841 100644 --- a/progs/redbook/accanti.c +++ b/progs/redbook/accanti.c @@ -45,7 +45,7 @@ /* Initialize lighting and other values. */ -void myinit(void) +static void myinit(void) { GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -68,7 +68,7 @@ void myinit(void) glClearAccum(0.0, 0.0, 0.0, 0.0); } -void displayObjects(void) +static void displayObjects(void) { GLfloat torus_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; GLfloat cube_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; @@ -111,7 +111,7 @@ void displayObjects(void) #define ACSIZE 8 -void display(void) +static void display(void) { GLint viewport[4]; int jitter; @@ -137,7 +137,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/accpersp.c b/progs/redbook/accpersp.c index 46e369ae63..e172d0a917 100644 --- a/progs/redbook/accpersp.c +++ b/progs/redbook/accpersp.c @@ -62,7 +62,7 @@ * probably want to insure that your ModelView matrix has been * initialized to identity before calling accFrustum(). */ -void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, +static void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nnear, GLdouble ffar, GLdouble pixdx, GLdouble pixdy, GLdouble eyedx, GLdouble eyedy, GLdouble focus) { @@ -99,7 +99,7 @@ void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, * * Note that accPerspective() calls accFrustum(). */ -void accPerspective(GLdouble fovy, GLdouble aspect, +static void accPerspective(GLdouble fovy, GLdouble aspect, GLdouble nnear, GLdouble ffar, GLdouble pixdx, GLdouble pixdy, GLdouble eyedx, GLdouble eyedy, GLdouble focus) { @@ -119,7 +119,7 @@ void accPerspective(GLdouble fovy, GLdouble aspect, /* Initialize lighting and other values. */ -void init(void) +static void init(void) { GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -141,7 +141,7 @@ void init(void) glClearAccum(0.0, 0.0, 0.0, 0.0); } -void displayObjects(void) +static void displayObjects(void) { GLfloat torus_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; GLfloat cube_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; @@ -185,7 +185,7 @@ void displayObjects(void) #define ACSIZE 8 -void display(void) +static void display(void) { GLint viewport[4]; int jitter; @@ -205,13 +205,13 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/alpha.c b/progs/redbook/alpha.c index 6eeb45b96f..b77c65e2c8 100644 --- a/progs/redbook/alpha.c +++ b/progs/redbook/alpha.c @@ -80,7 +80,7 @@ static void drawRightTriangle(void) glEnd(); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -96,7 +96,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -108,7 +108,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/redbook/alpha3D.c b/progs/redbook/alpha3D.c index 6169bd162b..494b1879d2 100644 --- a/progs/redbook/alpha3D.c +++ b/progs/redbook/alpha3D.c @@ -80,7 +80,7 @@ static void init(void) glEndList(); } -void display(void) +static void display(void) { GLfloat mat_solid[] = { 0.75, 0.75, 0.0, 1.0 }; GLfloat mat_zero[] = { 0.0, 0.0, 0.0, 1.0 }; @@ -113,7 +113,7 @@ void display(void) glutSwapBuffers(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLint) w, (GLint) h); glMatrixMode(GL_PROJECTION); @@ -128,7 +128,7 @@ void reshape(int w, int h) glLoadIdentity(); } -void animate(void) +static void animate(void) { static double t0 = -1.; if (solidZ <= MINZ || transparentZ >= MAXZ) @@ -150,7 +150,7 @@ void animate(void) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'a': diff --git a/progs/redbook/anti.c b/progs/redbook/anti.c index 9eab0bc351..a97a3ebc94 100644 --- a/progs/redbook/anti.c +++ b/progs/redbook/anti.c @@ -49,7 +49,7 @@ * blending, hint, and line width. Print out implementation * specific info on line width granularity and width. */ -void myinit(void) +static void myinit(void) { GLfloat values[2]; glGetFloatv (GL_LINE_WIDTH_GRANULARITY, values); @@ -73,7 +73,7 @@ void myinit(void) /* display() draws an icosahedron with a large alpha value, 1.0. */ -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor4f (1.0, 1.0, 1.0, 1.0); @@ -81,7 +81,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/bezcurve.c b/progs/redbook/bezcurve.c index 5dee440396..60a9c68080 100644 --- a/progs/redbook/bezcurve.c +++ b/progs/redbook/bezcurve.c @@ -45,7 +45,7 @@ GLfloat ctrlpoints[4][3] = { { -4.0, -4.0, 0.0}, { -2.0, 4.0, 0.0}, {2.0, -4.0, 0.0}, {4.0, 4.0, 0.0}}; -void init(void) +static void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); @@ -53,7 +53,7 @@ void init(void) glEnable(GL_MAP1_VERTEX_3); } -void display(void) +static void display(void) { int i; @@ -73,7 +73,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -89,7 +89,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/bezmesh.c b/progs/redbook/bezmesh.c index 55e7e827f2..1abc7488bc 100644 --- a/progs/redbook/bezmesh.c +++ b/progs/redbook/bezmesh.c @@ -68,7 +68,7 @@ GLfloat ctrlpoints[4][4][3] = {1.5, 1.5, -1.0}} }; -void +static void initlights(void) { GLfloat ambient[] = @@ -93,7 +93,7 @@ initlights(void) glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); } -void +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -104,7 +104,7 @@ display(void) glFlush(); } -void +static void myinit(void) { glClearColor(0.0, 0.0, 0.0, 1.0); @@ -118,7 +118,7 @@ myinit(void) initlights(); /* for lighted version only */ } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/checker.c b/progs/redbook/checker.c index 06cbae7dd7..60e6f7b60c 100644 --- a/progs/redbook/checker.c +++ b/progs/redbook/checker.c @@ -50,7 +50,7 @@ #define checkImageHeight 64 GLubyte checkImage[checkImageWidth][checkImageHeight][3]; -void makeCheckImage(void) +static void makeCheckImage(void) { int i, j, c; @@ -64,7 +64,7 @@ void makeCheckImage(void) } } -void myinit(void) +static void myinit(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glEnable(GL_DEPTH_TEST); @@ -84,7 +84,7 @@ void myinit(void) glShadeModel(GL_FLAT); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); @@ -101,7 +101,7 @@ void display(void) glutSwapBuffers(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/clip.c b/progs/redbook/clip.c index 90816f2e27..85c464720d 100644 --- a/progs/redbook/clip.c +++ b/progs/redbook/clip.c @@ -42,13 +42,13 @@ #include <GL/glut.h> #include <stdlib.h> -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void display(void) +static void display(void) { GLdouble eqn[4] = {0.0, 1.0, 0.0, 0.0}; GLdouble eqn2[4] = {1.0, 0.0, 0.0, 0.0}; @@ -73,7 +73,7 @@ void display(void) glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -83,7 +83,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/colormat.c b/progs/redbook/colormat.c index 9db4491bac..d77fcb1ed4 100644 --- a/progs/redbook/colormat.c +++ b/progs/redbook/colormat.c @@ -49,7 +49,7 @@ GLfloat diffuseMaterial[4] = { 0.5, 0.5, 0.5, 1.0 }; /* Initialize material property, light source, lighting model, * and depth buffer. */ -void init(void) +static void init(void) { GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; @@ -68,14 +68,14 @@ void init(void) glEnable(GL_COLOR_MATERIAL); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidSphere(1.0, 20, 16); glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -91,7 +91,7 @@ void reshape (int w, int h) } /* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) +static void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: @@ -127,7 +127,7 @@ void mouse(int button, int state, int x, int y) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/cube.c b/progs/redbook/cube.c index 5ecc6280f3..3c6becb215 100644 --- a/progs/redbook/cube.c +++ b/progs/redbook/cube.c @@ -44,13 +44,13 @@ #include <GL/glut.h> #include <stdlib.h> -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); @@ -62,7 +62,7 @@ void display(void) glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -72,7 +72,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/depthcue.c b/progs/redbook/depthcue.c index a3e5b743aa..d4b604baf1 100644 --- a/progs/redbook/depthcue.c +++ b/progs/redbook/depthcue.c @@ -48,7 +48,7 @@ /* Initialize linear fog for depth cueing. */ -void myinit(void) +static void myinit(void) { GLfloat fogColor[4] = {0.0, 0.0, 0.0, 1.0}; @@ -67,7 +67,7 @@ void myinit(void) /* display() draws an icosahedron. */ -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); @@ -75,7 +75,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/dof.c b/progs/redbook/dof.c index 6673dc2d54..8558f02dee 100644 --- a/progs/redbook/dof.c +++ b/progs/redbook/dof.c @@ -68,7 +68,7 @@ * probably want to insure that your ModelView matrix has been * initialized to identity before calling accFrustum(). */ -void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, +static void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nnear, GLdouble ffar, GLdouble pixdx, GLdouble pixdy, GLdouble eyedx, GLdouble eyedy, GLdouble focus) { @@ -105,7 +105,7 @@ void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, * * Note that accPerspective() calls accFrustum(). */ -void accPerspective(GLdouble fovy, GLdouble aspect, +static void accPerspective(GLdouble fovy, GLdouble aspect, GLdouble nnear, GLdouble ffar, GLdouble pixdx, GLdouble pixdy, GLdouble eyedx, GLdouble eyedy, GLdouble focus) { @@ -123,7 +123,7 @@ void accPerspective(GLdouble fovy, GLdouble aspect, pixdx, pixdy, eyedx, eyedy, focus); } -void myinit(void) +static void myinit(void) { GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -155,7 +155,7 @@ void myinit(void) glClearAccum(0.0, 0.0, 0.0, 0.0); } -void renderTeapot (GLfloat x, GLfloat y, GLfloat z, +static void renderTeapot (GLfloat x, GLfloat y, GLfloat z, GLfloat ambr, GLfloat ambg, GLfloat ambb, GLfloat difr, GLfloat difg, GLfloat difb, GLfloat specr, GLfloat specg, GLfloat specb, GLfloat shine) @@ -182,7 +182,7 @@ void renderTeapot (GLfloat x, GLfloat y, GLfloat z, * magnitude of the accPerspective() jitter; in this example, 0.33. * In this example, the teapots are drawn 8 times. See jitter.h */ -void display(void) +static void display(void) { int jitter; GLint viewport[4]; @@ -214,7 +214,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); } diff --git a/progs/redbook/double.c b/progs/redbook/double.c index 3153c70cc1..c4ead224dc 100644 --- a/progs/redbook/double.c +++ b/progs/redbook/double.c @@ -47,7 +47,7 @@ static GLfloat spin = 0.0; static GLdouble t0 = 0.; -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); @@ -59,12 +59,12 @@ void display(void) glutSwapBuffers(); } -GLdouble gettime(void) +static GLdouble gettime(void) { return (GLdouble)(glutGet(GLUT_ELAPSED_TIME)) / 1000.; } -void spinDisplay(void) +static void spinDisplay(void) { GLdouble t, dt; t = gettime(); @@ -76,13 +76,13 @@ void spinDisplay(void) glutPostRedisplay(); } -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -93,7 +93,7 @@ void reshape(int w, int h) } /* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) +static void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: diff --git a/progs/redbook/drawf.c b/progs/redbook/drawf.c index 5bcccb6aea..6c048be784 100644 --- a/progs/redbook/drawf.c +++ b/progs/redbook/drawf.c @@ -48,13 +48,13 @@ GLubyte rasters[24] = { 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0xc0, 0xff, 0xc0}; -void init(void) +static void init(void) { glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glClearColor (0.0, 0.0, 0.0, 0.0); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); @@ -65,7 +65,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -75,7 +75,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/feedback.c b/progs/redbook/feedback.c index cc685d55d3..3c8c8cc7ea 100644 --- a/progs/redbook/feedback.c +++ b/progs/redbook/feedback.c @@ -48,7 +48,7 @@ /* Initialize lighting. */ -void init(void) +static void init(void) { glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); @@ -58,7 +58,7 @@ void init(void) * be clipped. If in feedback mode, a passthrough token * is issued between the each primitive. */ -void drawGeometry (GLenum mode) +static void drawGeometry (GLenum mode) { glBegin (GL_LINE_STRIP); glNormal3f (0.0, 0.0, 1.0); @@ -80,8 +80,8 @@ void drawGeometry (GLenum mode) } /* Write contents of one vertex to stdout. */ -void print3DcolorVertex (GLint size, GLint *count, - GLfloat *buffer) +static void print3DcolorVertex (GLint size, GLint *count, + GLfloat *buffer) { int i; @@ -94,7 +94,7 @@ void print3DcolorVertex (GLint size, GLint *count, } /* Write contents of entire buffer. (Parse tokens!) */ -void printBuffer(GLint size, GLfloat *buffer) +static void printBuffer(GLint size, GLfloat *buffer) { GLint count; GLfloat token; @@ -124,7 +124,7 @@ void printBuffer(GLint size, GLfloat *buffer) } } -void display(void) +static void display(void) { GLfloat feedBuffer[1024]; GLint size; @@ -148,7 +148,7 @@ void display(void) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/fog.c b/progs/redbook/fog.c index 14c7700ecc..4f4b8e3cc0 100644 --- a/progs/redbook/fog.c +++ b/progs/redbook/fog.c @@ -52,7 +52,7 @@ GLint fogMode; -void +static void selectFog(int mode) { switch(mode) { @@ -73,7 +73,7 @@ selectFog(int mode) /* Initialize z-buffer, projection matrix, light source, * and lighting model. Do not specify a material property here. */ -void +static void myinit(void) { GLfloat position[] = @@ -106,7 +106,7 @@ myinit(void) } } -void +static void renderRedTeapot(GLfloat x, GLfloat y, GLfloat z) { float mat[4]; @@ -133,7 +133,7 @@ renderRedTeapot(GLfloat x, GLfloat y, GLfloat z) /* display() draws 5 teapots at different z positions. */ -void +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -145,7 +145,7 @@ display(void) glFlush(); } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/fogindex.c b/progs/redbook/fogindex.c index b8bb691e28..6b5aa353ca 100644 --- a/progs/redbook/fogindex.c +++ b/progs/redbook/fogindex.c @@ -53,7 +53,7 @@ #define NUM_COLORS 32 #define RAMPSTART 16 -void +static void myinit(void) { int i; @@ -77,7 +77,7 @@ myinit(void) /* display() renders 3 cones at different z positions. */ -void +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -104,7 +104,7 @@ display(void) glFlush(); } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/font.c b/progs/redbook/font.c index 2d92e9b600..c7a1035aa9 100644 --- a/progs/redbook/font.c +++ b/progs/redbook/font.c @@ -80,7 +80,7 @@ GLubyte letters[][13] = { GLuint fontOffset; -void makeRasterFont(void) +static void makeRasterFont(void) { GLuint i, j; glPixelStorei(GL_UNPACK_ALIGNMENT, 1); @@ -96,13 +96,13 @@ void makeRasterFont(void) glEndList(); } -void init(void) +static void init(void) { glShadeModel (GL_FLAT); makeRasterFont(); } -void printString(char *s) +static void printString(char *s) { glPushAttrib (GL_LIST_BIT); glListBase(fontOffset); @@ -115,7 +115,7 @@ void printString(char *s) * to call makeRasterFont() before you start making * calls to printString(). */ -void display(void) +static void display(void) { GLfloat white[3] = { 1.0, 1.0, 1.0 }; @@ -129,7 +129,7 @@ void display(void) glFlush (); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -139,7 +139,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/hello.c b/progs/redbook/hello.c index fb3dae1325..84183b25b9 100644 --- a/progs/redbook/hello.c +++ b/progs/redbook/hello.c @@ -42,7 +42,7 @@ #include <stdlib.h> #include <GL/glut.h> -void display(void) +static void display(void) { /* clear all pixels */ glClear (GL_COLOR_BUFFER_BIT); @@ -64,7 +64,7 @@ void display(void) glFlush (); } -void init (void) +static void init (void) { /* select clearing color */ glClearColor (0.0, 0.0, 0.0, 0.0); diff --git a/progs/redbook/image.c b/progs/redbook/image.c index dc1a7246eb..fa3b46f5ed 100644 --- a/progs/redbook/image.c +++ b/progs/redbook/image.c @@ -58,7 +58,7 @@ GLubyte checkImage[checkImageHeight][checkImageWidth][3]; static GLdouble zoomFactor = 1.0; static GLint height; -void makeCheckImage(void) +static void makeCheckImage(void) { int i, j, c; @@ -72,7 +72,7 @@ void makeCheckImage(void) } } -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); @@ -80,7 +80,7 @@ void init(void) glPixelStorei(GL_UNPACK_ALIGNMENT, 1); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0, 0); @@ -89,7 +89,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); height = (GLint) h; @@ -100,7 +100,7 @@ void reshape(int w, int h) glLoadIdentity(); } -void motion(int x, int y) +static void motion(int x, int y) { static GLint screeny; @@ -113,7 +113,7 @@ void motion(int x, int y) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'r': diff --git a/progs/redbook/light.c b/progs/redbook/light.c index 0eed85e10c..9431dce508 100644 --- a/progs/redbook/light.c +++ b/progs/redbook/light.c @@ -47,7 +47,7 @@ /* Initialize material property, light source, lighting model, * and depth buffer. */ -void init(void) +static void init(void) { GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; @@ -65,14 +65,14 @@ void init(void) glEnable(GL_DEPTH_TEST); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidSphere (1.0, 20, 16); glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -88,7 +88,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/lines.c b/progs/redbook/lines.c index b34d4c418c..9f12da9acf 100644 --- a/progs/redbook/lines.c +++ b/progs/redbook/lines.c @@ -46,13 +46,13 @@ #define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \ glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd(); -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void display(void) +static void display(void) { int i; @@ -104,7 +104,7 @@ void display(void) glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -113,7 +113,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/list.c b/progs/redbook/list.c index 3b4f44bd6d..5dea26fcad 100644 --- a/progs/redbook/list.c +++ b/progs/redbook/list.c @@ -69,7 +69,7 @@ static void drawLine (void) glEnd (); } -void display(void) +static void display(void) { GLuint i; @@ -82,7 +82,7 @@ void display(void) glFlush (); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); @@ -97,7 +97,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/material.c b/progs/redbook/material.c index f9a4fc5928..5edddd9ef8 100644 --- a/progs/redbook/material.c +++ b/progs/redbook/material.c @@ -49,7 +49,7 @@ /* Initialize z-buffer, projection matrix, light source, * and lighting model. Do not specify a material property here. */ -void myinit(void) +static void myinit(void) { GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -87,7 +87,7 @@ void myinit(void) * glTranslatef() is used to move spheres to their appropriate locations. */ -void display(void) +static void display(void) { GLfloat no_mat[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 }; @@ -260,7 +260,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/mipmap.c b/progs/redbook/mipmap.c index d32dd725f4..dadde055be 100644 --- a/progs/redbook/mipmap.c +++ b/progs/redbook/mipmap.c @@ -54,7 +54,7 @@ GLubyte mipmapImage4[4][4][3]; GLubyte mipmapImage2[2][2][3]; GLubyte mipmapImage1[1][1][3]; -void makeImages(void) +static void makeImages(void) { int i, j; @@ -98,7 +98,7 @@ void makeImages(void) mipmapImage1[0][0][2] = 255; } -void myinit(void) +static void myinit(void) { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); @@ -128,7 +128,7 @@ void myinit(void) glEnable(GL_TEXTURE_2D); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); @@ -140,7 +140,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/model.c b/progs/redbook/model.c index 8411ef355f..f7c92f4f87 100644 --- a/progs/redbook/model.c +++ b/progs/redbook/model.c @@ -42,13 +42,13 @@ #include <GL/glut.h> #include <stdlib.h> -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void draw_triangle(void) +static void draw_triangle(void) { glBegin (GL_LINE_LOOP); glVertex2f(0.0, 25.0); @@ -57,7 +57,7 @@ void draw_triangle(void) glEnd(); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); @@ -86,7 +86,7 @@ void display(void) glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -101,7 +101,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/movelight.c b/progs/redbook/movelight.c index a108cad439..93758a222a 100644 --- a/progs/redbook/movelight.c +++ b/progs/redbook/movelight.c @@ -58,7 +58,7 @@ static int spin = 0; /* Initialize material property, light source, lighting model, * and depth buffer. */ -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); @@ -72,7 +72,7 @@ void init(void) * light at a new position in world coordinates. The cube * represents the position of the light. */ -void display(void) +static void display(void) { GLfloat position[] = { 0.0, 0.0, 1.5, 1.0 }; @@ -96,7 +96,7 @@ void display(void) glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -107,7 +107,7 @@ void reshape (int w, int h) } /* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) +static void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: @@ -122,7 +122,7 @@ void mouse(int button, int state, int x, int y) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/nurbs.c b/progs/redbook/nurbs.c index a7c6f0c696..fe03ce667e 100644 --- a/progs/redbook/nurbs.c +++ b/progs/redbook/nurbs.c @@ -89,7 +89,7 @@ GLUnurbsObj *theNurb; /* Initialize material property, light source, lighting model, * and depth buffer. */ -void myinit(void) +static void myinit(void) { GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_diffuse[] = { 1.0, 0.2, 1.0, 1.0 }; @@ -122,7 +122,7 @@ void myinit(void) gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -147,7 +147,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/pickdepth.c b/progs/redbook/pickdepth.c index ad5bdc8199..91d44a38c0 100644 --- a/progs/redbook/pickdepth.c +++ b/progs/redbook/pickdepth.c @@ -51,7 +51,7 @@ #include <stdio.h> #include <GL/glut.h> -void +static void myinit(void) { glClearColor(0.0, 0.0, 0.0, 0.0); @@ -65,7 +65,7 @@ myinit(void) * each rectangle is given the same name. Note that * each rectangle is drawn with a different z value. */ -void +static void drawRects(GLenum mode) { if (mode == GL_SELECT) @@ -100,7 +100,7 @@ drawRects(GLenum mode) /* processHits() prints out the contents of the * selection array. */ -void +static void processHits(GLint hits, GLuint buffer[]) { GLint i; @@ -131,7 +131,7 @@ processHits(GLint hits, GLuint buffer[]) */ #define BUFSIZE 512 -void +static void pickRects(int button, int state, int x, int y) { GLuint selectBuf[BUFSIZE]; @@ -164,7 +164,7 @@ pickRects(int button, int state, int x, int y) processHits(hits, selectBuf); } -void +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -172,7 +172,7 @@ display(void) glutSwapBuffers(); } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/picksquare.c b/progs/redbook/picksquare.c index 636edc97b4..cc092dbf53 100644 --- a/progs/redbook/picksquare.c +++ b/progs/redbook/picksquare.c @@ -49,7 +49,7 @@ int board[3][3]; /* amount of color for each square */ /* Clear color value for every square on the board */ -void init(void) +static void init(void) { int i, j; for (i = 0; i < 3; i++) @@ -64,7 +64,7 @@ void init(void) * square is determined by its position on the grid, and * the value in the board[][] array. */ -void drawSquares(GLenum mode) +static void drawSquares(GLenum mode) { GLuint i, j; for (i = 0; i < 3; i++) { @@ -85,7 +85,7 @@ void drawSquares(GLenum mode) /* processHits prints out the contents of the * selection array. */ -void processHits (GLint hits, GLuint buffer[]) +static void processHits (GLint hits, GLuint buffer[]) { GLint i; GLuint j, ii = 0, jj = 0, names, *ptr; @@ -117,7 +117,7 @@ void processHits (GLint hits, GLuint buffer[]) */ #define BUFSIZE 512 -void pickSquares(int button, int state, int x, int y) +static void pickSquares(int button, int state, int x, int y) { GLuint selectBuf[BUFSIZE]; GLint hits; @@ -152,14 +152,14 @@ void pickSquares(int button, int state, int x, int y) glutPostRedisplay(); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); drawSquares (GL_RENDER); glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); @@ -170,7 +170,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/plane.c b/progs/redbook/plane.c index dc17f7b238..2c2e2d24d9 100644 --- a/progs/redbook/plane.c +++ b/progs/redbook/plane.c @@ -47,7 +47,7 @@ /* Initialize material property, light source, and lighting model. */ -void myinit(void) +static void myinit(void) { GLfloat mat_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; /* mat_specular and mat_shininess are NOT default values */ @@ -75,7 +75,7 @@ void myinit(void) glEnable(GL_DEPTH_TEST); } -void drawPlane(void) +static void drawPlane(void) { glBegin (GL_QUADS); glNormal3f (0.0, 0.0, 1.0); @@ -104,7 +104,7 @@ void drawPlane(void) glEnd(); } -void display (void) +static void display (void) { GLfloat infinite_light[] = { 1.0, 1.0, 1.0, 0.0 }; GLfloat local_light[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -125,7 +125,7 @@ void display (void) glFlush (); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport (0, 0, w, h); glMatrixMode (GL_PROJECTION); diff --git a/progs/redbook/planet.c b/progs/redbook/planet.c index e13672d3f6..cc428b4e42 100644 --- a/progs/redbook/planet.c +++ b/progs/redbook/planet.c @@ -47,13 +47,13 @@ static int year = 0, day = 0; -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); @@ -68,7 +68,7 @@ void display(void) glutSwapBuffers(); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -80,7 +80,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) +static void keyboard (unsigned char key, int x, int y) { switch (key) { case 'd': diff --git a/progs/redbook/polyoff.c b/progs/redbook/polyoff.c index de34b2e767..0e0ce86ec9 100644 --- a/progs/redbook/polyoff.c +++ b/progs/redbook/polyoff.c @@ -60,7 +60,7 @@ GLboolean doubleBuffer; /* display() draws two spheres, one with a gray, diffuse material, * the other sphere with a magenta material with a specular highlight. */ -void display (void) +static void display (void) { GLfloat gray[] = { 0.8, 0.8, 0.8, 1.0 }; GLfloat black[] = { 0.0, 0.0, 0.0, 1.0 }; @@ -108,7 +108,7 @@ void display (void) * create display list with sphere * initialize lighting and depth buffer */ -void gfxinit (void) +static void gfxinit (void) { GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -134,7 +134,7 @@ void gfxinit (void) } /* call when window is resized */ -void reshape(int width, int height) +static void reshape(int width, int height) { glViewport (0, 0, width, height); glMatrixMode (GL_PROJECTION); @@ -176,7 +176,7 @@ static void Benchmark( float xdiff, float ydiff ) /* call when mouse button is pressed */ /* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) { +static void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: switch (state) { @@ -213,7 +213,7 @@ void mouse(int button, int state, int x, int y) { } /* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) +static void keyboard (unsigned char key, int x, int y) { switch (key) { case 't': @@ -268,20 +268,7 @@ void keyboard (unsigned char key, int x, int y) fflush(stdout); } -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -GLenum Args(int argc, char **argv) +static GLenum Args(int argc, char **argv) { GLint i; diff --git a/progs/redbook/polys.c b/progs/redbook/polys.c index 409abd1753..eeffe2301c 100644 --- a/progs/redbook/polys.c +++ b/progs/redbook/polys.c @@ -44,7 +44,7 @@ #include <stdlib.h> #include <GL/glut.h> -void display(void) +static void display(void) { GLubyte fly[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, @@ -89,7 +89,7 @@ void display(void) glFlush (); } -void myinit (void) +static void myinit (void) { /* clear background to black */ glClearColor (0.0, 0.0, 0.0, 0.0); diff --git a/progs/redbook/quadric.c b/progs/redbook/quadric.c index 4e46c85f82..1cbd395e47 100644 --- a/progs/redbook/quadric.c +++ b/progs/redbook/quadric.c @@ -54,7 +54,7 @@ GLuint startList; -void CALLBACK errorCallback(GLenum errorCode) +static void CALLBACK errorCallback(GLenum errorCode) { const GLubyte *estring; @@ -63,7 +63,7 @@ void CALLBACK errorCallback(GLenum errorCode) exit(0); } -void init(void) +static void init(void) { GLUquadricObj *qobj; GLfloat mat_ambient[] = { 0.5, 0.5, 0.5, 1.0 }; @@ -116,9 +116,11 @@ void init(void) glNewList(startList+3, GL_COMPILE); gluPartialDisk(qobj, 0.0, 1.0, 20, 4, 0.0, 225.0); glEndList(); + + gluDeleteQuadric(qobj); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); @@ -148,7 +150,7 @@ void display(void) glFlush(); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -164,7 +166,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/robot.c b/progs/redbook/robot.c index 94e20ac71e..c90b72ab3e 100644 --- a/progs/redbook/robot.c +++ b/progs/redbook/robot.c @@ -47,13 +47,13 @@ static int shoulder = 0, elbow = 0; -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT); glPushMatrix(); @@ -77,7 +77,7 @@ void display(void) glutSwapBuffers(); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -89,7 +89,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) +static void keyboard (unsigned char key, int x, int y) { switch (key) { case 's': diff --git a/progs/redbook/sccolorlight.c b/progs/redbook/sccolorlight.c index 0ea750e584..d9e0a254e9 100644 --- a/progs/redbook/sccolorlight.c +++ b/progs/redbook/sccolorlight.c @@ -49,7 +49,7 @@ /* Initialize material property and light source. */ -void myinit(void) +static void myinit(void) { GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 0.0, 1.0, 1.0 }; @@ -68,7 +68,7 @@ void myinit(void) glEnable(GL_DEPTH_TEST); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); @@ -95,7 +95,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/scene.c b/progs/redbook/scene.c index c3abc727b7..6f336a8db4 100644 --- a/progs/redbook/scene.c +++ b/progs/redbook/scene.c @@ -48,7 +48,7 @@ /* Initialize material property and light source. */ -void myinit (void) +static void myinit (void) { GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -67,7 +67,7 @@ void myinit (void) glEnable(GL_DEPTH_TEST); } -void display (void) +static void display (void) { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -95,7 +95,7 @@ void display (void) glFlush (); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport (0, 0, w, h); glMatrixMode (GL_PROJECTION); diff --git a/progs/redbook/scenebamb.c b/progs/redbook/scenebamb.c index e7264d2003..ea605f8c73 100644 --- a/progs/redbook/scenebamb.c +++ b/progs/redbook/scenebamb.c @@ -47,7 +47,7 @@ /* Initialize light source and lighting. */ -void myinit(void) +static void myinit(void) { GLfloat light_ambient[] = { 0.0, 0.0, 1.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -66,7 +66,7 @@ void myinit(void) glEnable(GL_DEPTH_TEST); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -94,7 +94,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/sceneflat.c b/progs/redbook/sceneflat.c index 10891fb997..1b277334f5 100644 --- a/progs/redbook/sceneflat.c +++ b/progs/redbook/sceneflat.c @@ -46,7 +46,7 @@ /* Initialize light source and shading model (GL_FLAT). */ -void myinit(void) +static void myinit(void) { GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -66,7 +66,7 @@ void myinit(void) glShadeModel (GL_FLAT); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -94,7 +94,7 @@ void display(void) glFlush(); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/select.c b/progs/redbook/select.c index 928373b879..537d5194d4 100644 --- a/progs/redbook/select.c +++ b/progs/redbook/select.c @@ -57,7 +57,7 @@ /* draw a triangle with vertices at (x1, y1), (x2, y2) * and (x3, y3) at z units away from the origin. */ -void drawTriangle (GLfloat x1, GLfloat y1, GLfloat x2, +static void drawTriangle (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2, GLfloat x3, GLfloat y3, GLfloat z) { glBegin (GL_TRIANGLES); @@ -68,8 +68,8 @@ void drawTriangle (GLfloat x1, GLfloat y1, GLfloat x2, } /* draw a rectangular box with these outer x, y, and z values */ -void drawViewVolume (GLfloat x1, GLfloat x2, GLfloat y1, - GLfloat y2, GLfloat z1, GLfloat z2) +static void drawViewVolume (GLfloat x1, GLfloat x2, GLfloat y1, + GLfloat y2, GLfloat z1, GLfloat z2) { glColor3f (1.0, 1.0, 1.0); glBegin (GL_LINE_LOOP); @@ -101,7 +101,7 @@ void drawViewVolume (GLfloat x1, GLfloat x2, GLfloat y1, /* drawScene draws 4 triangles and a wire frame * which represents the viewing volume. */ -void drawScene (void) +static void drawScene (void) { glMatrixMode (GL_PROJECTION); glLoadIdentity (); @@ -122,7 +122,7 @@ void drawScene (void) /* processHits prints out the contents of the selection array */ -void processHits (GLint hits, GLuint buffer[]) +static void processHits (GLint hits, GLuint buffer[]) { GLint i; GLuint j, names, *ptr; @@ -150,7 +150,7 @@ void processHits (GLint hits, GLuint buffer[]) */ #define BUFSIZE 512 -void selectObjects(void) +static void selectObjects(void) { GLuint selectBuf[BUFSIZE]; GLint hits; @@ -181,13 +181,13 @@ void selectObjects(void) processHits (hits, selectBuf); } -void init (void) +static void init (void) { glEnable(GL_DEPTH_TEST); glShadeModel(GL_FLAT); } -void display(void) +static void display(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -197,7 +197,7 @@ void display(void) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/smooth.c b/progs/redbook/smooth.c index 9d22fc9025..874033d5ad 100644 --- a/progs/redbook/smooth.c +++ b/progs/redbook/smooth.c @@ -43,13 +43,13 @@ #include <GL/glut.h> #include <stdlib.h> -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); } -void triangle(void) +static void triangle(void) { glBegin (GL_TRIANGLES); glColor3f (1.0, 0.0, 0.0); @@ -61,14 +61,14 @@ void triangle(void) glEnd(); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT); triangle (); glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -81,7 +81,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/stencil.c b/progs/redbook/stencil.c index b33e40a030..5325abf8b7 100644 --- a/progs/redbook/stencil.c +++ b/progs/redbook/stencil.c @@ -64,7 +64,7 @@ #define YELLOWMAT 1 #define BLUEMAT 2 -void myinit (void) +static void myinit (void) { GLfloat yellow_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; GLfloat yellow_specular[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -101,7 +101,7 @@ void myinit (void) /* Draw a sphere in a diamond-shaped section in the * middle of a window with 2 tori. */ -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -132,7 +132,7 @@ void display(void) /* Whenever the window is reshaped, redefine the * coordinate system and redraw the stencil area. */ -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/stroke.c b/progs/redbook/stroke.c index 19b0391cba..68b639abf4 100644 --- a/progs/redbook/stroke.c +++ b/progs/redbook/stroke.c @@ -87,7 +87,7 @@ CP Sdata[] = { /* drawLetter() interprets the instructions from the array * for that letter and renders the letter with line segments. */ -void drawLetter(CP *l) +static void drawLetter(CP *l) { glBegin(GL_LINE_STRIP); for (;;) { @@ -111,7 +111,7 @@ void drawLetter(CP *l) } /* Create a display list for each of 6 characters */ -void myinit (void) +static void myinit (void) { GLuint base; @@ -130,13 +130,13 @@ void myinit (void) char *test1 = "A SPARE SERAPE APPEARS AS"; char *test2 = "APES PREPARE RARE PEPPERS"; -void printStrokedString(char *s) +static void printStrokedString(char *s) { GLsizei len = (GLsizei) strlen(s); glCallLists(len, GL_BYTE, (GLbyte *)s); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); diff --git a/progs/redbook/surface.c b/progs/redbook/surface.c index e33ce14f4f..f0c5ab0b47 100644 --- a/progs/redbook/surface.c +++ b/progs/redbook/surface.c @@ -53,7 +53,7 @@ GLUnurbsObj *theNurb; * Initializes the control points of the surface to a small hill. * The control points range from -3 to +3 in x, y, and z */ -void init_surface(void) +static void init_surface(void) { int u, v; for (u = 0; u < 4; u++) { @@ -71,7 +71,7 @@ void init_surface(void) /* Initialize material property and depth buffer. */ -void myinit(void) +static void myinit(void) { GLfloat mat_diffuse[] = { 0.7, 0.7, 0.7, 1.0 }; GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -100,7 +100,7 @@ void myinit(void) glTranslatef (0.0, 0.0, -5.0); } -void display(void) +static void display(void) { GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; int i, j; @@ -140,7 +140,7 @@ void display(void) glutSwapBuffers(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); @@ -150,7 +150,7 @@ void reshape(int w, int h) glMatrixMode(GL_MODELVIEW); } -void +static void menu(int value) { switch (value) { @@ -171,7 +171,7 @@ menu(int value) int down = 0, lastx; /* ARGSUSED1 */ -void +static void motion(int x, int y) { if (down) { @@ -182,7 +182,7 @@ motion(int x, int y) } /* ARGSUSED3 */ -void +static void mouse(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON) { diff --git a/progs/redbook/teaambient.c b/progs/redbook/teaambient.c index 53b5111752..20ff1a4a33 100644 --- a/progs/redbook/teaambient.c +++ b/progs/redbook/teaambient.c @@ -47,7 +47,7 @@ /* Initialize light source and lighting model. */ -void +static void myinit(void) { GLfloat light_ambient[] = @@ -78,7 +78,7 @@ myinit(void) glEnable(GL_DEPTH_TEST); } -void +static void display(void) { GLfloat low_ambient[] = @@ -114,7 +114,7 @@ display(void) glFlush(); } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/teapots.c b/progs/redbook/teapots.c index fb7aed380e..102c18a3e3 100644 --- a/progs/redbook/teapots.c +++ b/progs/redbook/teapots.c @@ -49,7 +49,7 @@ * Initialize depth buffer, projection matrix, light source, and lighting * model. Do not specify a material property here. */ -void +static void myinit(void) { GLfloat ambient[] = @@ -83,7 +83,7 @@ myinit(void) * Move object into position. Use 3rd through 12th parameters to specify the * material property. Draw a teapot. */ -void +static void renderTeapot(GLfloat x, GLfloat y, GLfloat ambr, GLfloat ambg, GLfloat ambb, GLfloat difr, GLfloat difg, GLfloat difb, @@ -117,7 +117,7 @@ renderTeapot(GLfloat x, GLfloat y, * 3rd column: black, cyan, green, red, white, yellow plastic * 4th column: black, cyan, green, red, white, yellow rubber */ -void +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -173,7 +173,7 @@ display(void) glFlush(); } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/redbook/tess.c b/progs/redbook/tess.c index 238a469aff..0bf8a8eb98 100644 --- a/progs/redbook/tess.c +++ b/progs/redbook/tess.c @@ -61,7 +61,7 @@ GLuint startList; -void display (void) { +static void display (void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glCallList(startList); @@ -69,12 +69,12 @@ void display (void) { glFlush(); } -void CALLBACK beginCallback(GLenum which) +static void CALLBACK beginCallback(GLenum which) { glBegin(which); } -void CALLBACK errorCallback(GLenum errorCode) +static void CALLBACK errorCallback(GLenum errorCode) { const GLubyte *estring; @@ -83,12 +83,12 @@ void CALLBACK errorCallback(GLenum errorCode) exit(0); } -void CALLBACK endCallback(void) +static void CALLBACK endCallback(void) { glEnd(); } -void CALLBACK vertexCallback(GLvoid *vertex) +static void CALLBACK vertexCallback(GLvoid *vertex) { const GLdouble *pointer; @@ -102,7 +102,7 @@ void CALLBACK vertexCallback(GLvoid *vertex) * but weight[4] may be used to average color, normal, or texture * coordinate data. In this program, color is weighted. */ -void CALLBACK combineCallback(GLdouble coords[3], +static void CALLBACK combineCallback(GLdouble coords[3], GLdouble *vertex_data[4], GLfloat weight[4], GLdouble **dataOut ) { @@ -122,7 +122,7 @@ void CALLBACK combineCallback(GLdouble coords[3], *dataOut = vertex; } -void init (void) +static void init (void) { GLUtesselator *tobj; GLdouble rect[4][3] = {{50.0, 50.0, 0.0}, @@ -199,7 +199,7 @@ void init (void) gluDeleteTess(tobj); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -208,7 +208,7 @@ void reshape (int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/tesswind.c b/progs/redbook/tesswind.c index 7d00c9f907..4729880a57 100644 --- a/progs/redbook/tesswind.c +++ b/progs/redbook/tesswind.c @@ -61,7 +61,7 @@ GLuint list; /* Make four display lists, * each with a different tessellated object. */ -void makeNewLists (void) { +static void makeNewLists (void) { int i; static GLdouble rects[12][3] = {{ 50.0, 50.0, 0.0}, {300.0, 50.0, 0.0}, @@ -153,7 +153,7 @@ void makeNewLists (void) { glEndList(); } -void display (void) { +static void display (void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glPushMatrix(); @@ -168,12 +168,12 @@ void display (void) { glFlush(); } -void CALLBACK beginCallback(GLenum which) +static void CALLBACK beginCallback(GLenum which) { glBegin(which); } -void CALLBACK errorCallback(GLenum errorCode) +static void CALLBACK errorCallback(GLenum errorCode) { const GLubyte *estring; @@ -182,7 +182,7 @@ void CALLBACK errorCallback(GLenum errorCode) exit(0); } -void CALLBACK endCallback(void) +static void CALLBACK endCallback(void) { glEnd(); } @@ -193,7 +193,7 @@ void CALLBACK endCallback(void) * coordinate data. */ /* ARGSUSED */ -void CALLBACK combineCallback(GLdouble coords[3], GLdouble *data[4], +static void CALLBACK combineCallback(GLdouble coords[3], GLdouble *data[4], GLfloat weight[4], GLdouble **dataOut ) { GLdouble *vertex; @@ -205,7 +205,7 @@ void CALLBACK combineCallback(GLdouble coords[3], GLdouble *data[4], *dataOut = vertex; } -void init(void) +static void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); @@ -226,7 +226,7 @@ void init(void) makeNewLists(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -240,7 +240,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'w': diff --git a/progs/redbook/texbind.c b/progs/redbook/texbind.c index 6a828ab2bd..b6404b32d8 100644 --- a/progs/redbook/texbind.c +++ b/progs/redbook/texbind.c @@ -52,7 +52,7 @@ static GLubyte otherImage[checkImageHeight][checkImageWidth][4]; static GLuint texName[2]; -void makeCheckImages(void) +static void makeCheckImages(void) { int i, j, c; @@ -72,7 +72,7 @@ void makeCheckImages(void) } } -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); @@ -105,7 +105,7 @@ void init(void) glEnable(GL_TEXTURE_2D); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBindTexture(GL_TEXTURE_2D, texName[0]); @@ -125,7 +125,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -137,7 +137,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/texgen.c b/progs/redbook/texgen.c index 7c1802a3be..5cb97e5a43 100644 --- a/progs/redbook/texgen.c +++ b/progs/redbook/texgen.c @@ -60,7 +60,7 @@ GLubyte stripeImage[4*stripeImageWidth]; static GLuint texName; #endif -void makeStripeImage(void) +static void makeStripeImage(void) { int j; @@ -79,7 +79,7 @@ static GLfloat *currentCoeff; static GLenum currentPlane; static GLint currentGenMode; -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glEnable(GL_DEPTH_TEST); @@ -122,7 +122,7 @@ void init(void) glMaterialf (GL_FRONT, GL_SHININESS, 64.0); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -136,7 +136,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -152,7 +152,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) +static void keyboard (unsigned char key, int x, int y) { switch (key) { case 'e': diff --git a/progs/redbook/texprox.c b/progs/redbook/texprox.c index 6f1e853fac..c2d699a71b 100644 --- a/progs/redbook/texprox.c +++ b/progs/redbook/texprox.c @@ -53,7 +53,7 @@ #define GL_TEXTURE_INTERNAL_FORMAT GL_TEXTURE_COMPONENTS #endif -void init(void) +static void init(void) { GLint proxyComponents; @@ -84,12 +84,12 @@ void init(void) putchar('\n'); } -void display(void) +static void display(void) { exit(0); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); diff --git a/progs/redbook/texsub.c b/progs/redbook/texsub.c index 4e829675ab..7827d5a45f 100644 --- a/progs/redbook/texsub.c +++ b/progs/redbook/texsub.c @@ -58,7 +58,7 @@ static GLubyte subImage[subImageHeight][subImageWidth][4]; static GLuint texName; -void makeCheckImages(void) +static void makeCheckImages(void) { int i, j, c; @@ -82,7 +82,7 @@ void makeCheckImages(void) } } -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); @@ -102,7 +102,7 @@ void init(void) 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); @@ -123,7 +123,7 @@ void display(void) glDisable(GL_TEXTURE_2D); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -135,7 +135,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) +static void keyboard (unsigned char key, int x, int y) { switch (key) { case 's': diff --git a/progs/redbook/texturesurf.c b/progs/redbook/texturesurf.c index 0170070eaa..2023072dba 100644 --- a/progs/redbook/texturesurf.c +++ b/progs/redbook/texturesurf.c @@ -60,7 +60,7 @@ GLfloat ctrlpoints[4][4][3] = { GLfloat texpts[2][2][2] = {{{0.0, 0.0}, {0.0, 1.0}}, {{1.0, 0.0}, {1.0, 1.0}}}; -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); @@ -72,7 +72,7 @@ void display(void) #define imageHeight 64 GLubyte image[3*imageWidth*imageHeight]; -void makeImage(void) +static void makeImage(void) { int i, j; float ti, tj; @@ -89,7 +89,7 @@ void makeImage(void) } } -void myinit(void) +static void myinit(void) { glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]); @@ -112,7 +112,7 @@ void myinit(void) glShadeModel (GL_FLAT); } -void myReshape(int w, int h) +static void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); diff --git a/progs/redbook/torus.c b/progs/redbook/torus.c index 7ae4d41e26..a67d48e0f5 100644 --- a/progs/redbook/torus.c +++ b/progs/redbook/torus.c @@ -89,7 +89,7 @@ static void init(void) } /* Clear window and draw torus */ -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); @@ -98,7 +98,7 @@ void display(void) } /* Handle window resize */ -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -112,7 +112,7 @@ void reshape(int w, int h) /* Rotate about x-axis when "x" typed; rotate about y-axis when "y" typed; "i" returns torus to original view */ /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'x': diff --git a/progs/redbook/trim.c b/progs/redbook/trim.c index f17674f684..216f62a7c2 100644 --- a/progs/redbook/trim.c +++ b/progs/redbook/trim.c @@ -59,7 +59,7 @@ GLUnurbsObj *theNurb; * Initializes the control points of the surface to a small hill. * The control points range from -3 to +3 in x, y, and z */ -void init_surface(void) +static void init_surface(void) { int u, v; for (u = 0; u < 4; u++) { @@ -75,7 +75,7 @@ void init_surface(void) } } -void nurbsError(GLenum errorCode) +static void nurbsError(GLenum errorCode) { const GLubyte *estring; @@ -86,7 +86,7 @@ void nurbsError(GLenum errorCode) /* Initialize material property and depth buffer. */ -void init(void) +static void init(void) { GLfloat mat_diffuse[] = { 0.7, 0.7, 0.7, 1.0 }; GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -112,7 +112,7 @@ void init(void) (GLvoid (CALLBACK*) ()) nurbsError); } -void display(void) +static void display(void) { GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; GLfloat edgePt[5][2] = /* counter clockwise */ @@ -147,7 +147,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -160,7 +160,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/unproject.c b/progs/redbook/unproject.c index 134c361bac..6d1c7dbede 100644 --- a/progs/redbook/unproject.c +++ b/progs/redbook/unproject.c @@ -45,14 +45,14 @@ #include <stdlib.h> #include <stdio.h> -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } /* Change these values for a different transformation */ -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -62,7 +62,7 @@ void reshape(int w, int h) glLoadIdentity(); } -void mouse(int button, int state, int x, int y) +static void mouse(int button, int state, int x, int y) { GLint viewport[4]; GLdouble mvmatrix[16], projmatrix[16]; @@ -98,7 +98,7 @@ void mouse(int button, int state, int x, int y) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/varray.c b/progs/redbook/varray.c index b22e723e0e..8ce39d7763 100644 --- a/progs/redbook/varray.c +++ b/progs/redbook/varray.c @@ -54,7 +54,7 @@ int setupMethod = POINTER; int derefMethod = DRAWARRAY; -void setupPointers(void) +static void setupPointers(void) { static GLint vertices[] = {25, 25, 100, 325, @@ -76,7 +76,7 @@ void setupPointers(void) glColorPointer (3, GL_FLOAT, 0, colors); } -void setupInterleave(void) +static void setupInterleave(void) { static GLfloat intertwined[] = {1.0, 0.2, 1.0, 100.0, 100.0, 0.0, @@ -89,14 +89,14 @@ void setupInterleave(void) glInterleavedArrays (GL_C3F_V3F, 0, intertwined); } -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); setupPointers (); } -void display(void) +static void display(void) { glClear (GL_COLOR_BUFFER_BIT); @@ -117,7 +117,7 @@ void display(void) glFlush (); } -void reshape (int w, int h) +static void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); @@ -126,7 +126,7 @@ void reshape (int w, int h) } /* ARGSUSED2 */ -void mouse (int button, int state, int x, int y) +static void mouse (int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: @@ -160,7 +160,7 @@ void mouse (int button, int state, int x, int y) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: diff --git a/progs/redbook/wrap.c b/progs/redbook/wrap.c index f9a1f162ab..67749716e8 100644 --- a/progs/redbook/wrap.c +++ b/progs/redbook/wrap.c @@ -59,7 +59,7 @@ static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; static GLuint texName; #endif -void makeCheckImage(void) +static void makeCheckImage(void) { int i, j, c; @@ -74,7 +74,7 @@ void makeCheckImage(void) } } -void init(void) +static void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); @@ -101,7 +101,7 @@ void init(void) #endif } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); @@ -125,7 +125,7 @@ void display(void) glDisable(GL_TEXTURE_2D); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -137,7 +137,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) +static void keyboard (unsigned char key, int x, int y) { switch (key) { case 's': diff --git a/progs/samples/.gitignore b/progs/samples/.gitignore index f60d6e94ea..c15b886b88 100644 --- a/progs/samples/.gitignore +++ b/progs/samples/.gitignore @@ -36,6 +36,7 @@ prim quad readtex.c readtex.h +rgbtoppm select shape sphere diff --git a/progs/samples/Makefile b/progs/samples/Makefile index b300e38b9c..64fa47addb 100644 --- a/progs/samples/Makefile +++ b/progs/samples/Makefile @@ -10,7 +10,7 @@ LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) $(T LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) PROGS = accum bitmap1 bitmap2 blendeq blendxor copy cursor depth eval fog \ - font line logo nurb olympic overlay point prim quad select \ + font line logo nurb olympic overlay point prim rgbtoppm quad select \ shape sphere star stencil stretch texture tri wave diff --git a/progs/samples/SConscript b/progs/samples/SConscript index 7a8a0d62d8..134dfa9980 100644 --- a/progs/samples/SConscript +++ b/progs/samples/SConscript @@ -1,23 +1,5 @@ Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - progs = [ 'accum', 'bitmap1', @@ -52,7 +34,7 @@ progs = [ ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = prog + '.c', ) diff --git a/progs/samples/olympic.c b/progs/samples/olympic.c index 5385e48702..209a8c141b 100644 --- a/progs/samples/olympic.c +++ b/progs/samples/olympic.c @@ -74,7 +74,7 @@ int iters[RINGS]; GLuint theTorus; -void FillTorus(float rc, int numc, float rt, int numt) +static void FillTorus(float rc, int numc, float rt, int numt) { int i, j, k; double s, t; @@ -106,7 +106,7 @@ void FillTorus(float rc, int numc, float rt, int numt) } } -float Clamp(int iters_left, float t) +static float Clamp(int iters_left, float t) { if (iters_left < 3) { return 0.0; @@ -114,7 +114,7 @@ float Clamp(int iters_left, float t) return (iters_left-2)*t/iters_left; } -void DrawScene(void) +static void DrawScene(void) { int i, j; GLboolean goIdle; @@ -172,7 +172,7 @@ void DrawScene(void) } } -float MyRand(void) +static float MyRand(void) { return 10.0 * ( (float) rand() / (float) RAND_MAX - 0.5 ); } @@ -181,12 +181,12 @@ float MyRand(void) #define GLUTCALLBACK #endif -void GLUTCALLBACK glut_post_redisplay_p(void) +static void GLUTCALLBACK glut_post_redisplay_p(void) { glutPostRedisplay(); } -void ReInit(void) +static void ReInit(void) { int i; float deviation; @@ -206,7 +206,7 @@ void ReInit(void) glutIdleFunc(glut_post_redisplay_p); } -void Init(void) +static void Init(void) { float base, height; float aspect, x, y; @@ -312,13 +312,13 @@ void Init(void) glMatrixMode(GL_MODELVIEW); } -void Reshape(int width, int height) +static void Reshape(int width, int height) { glViewport(0, 0, width, height); } -void Key(unsigned char key, int x, int y) +static void Key(unsigned char key, int x, int y) { switch (key) { @@ -330,7 +330,7 @@ void Key(unsigned char key, int x, int y) } } -GLenum Args(int argc, char **argv) +static GLenum Args(int argc, char **argv) { GLint i; diff --git a/progs/samples/overlay.c b/progs/samples/overlay.c index 23b5a4793b..6087cef281 100644 --- a/progs/samples/overlay.c +++ b/progs/samples/overlay.c @@ -69,19 +69,19 @@ starRec stars[MAXSTARS]; float sinTable[MAXANGLES]; -float Sin(float angle) +static float Sin(float angle) { return (sinTable[(GLint)angle]); } -float Cos(float angle) +static float Cos(float angle) { return (sinTable[((GLint)angle+(MAXANGLES/4))%MAXANGLES]); } -void NewStar(GLint n, GLint d) +static void NewStar(GLint n, GLint d) { if (rand()%4 == 0) { @@ -103,7 +103,7 @@ void NewStar(GLint n, GLint d) } } -void RotatePoint(float *x, float *y, float rotation) +static void RotatePoint(float *x, float *y, float rotation) { float tmpX, tmpY; @@ -113,7 +113,7 @@ void RotatePoint(float *x, float *y, float rotation) *y = tmpY; } -void MoveStars(void) +static void MoveStars(void) { float offset; GLint n; @@ -134,7 +134,7 @@ void MoveStars(void) } } -GLenum StarPoint(GLint n) +static GLenum StarPoint(GLint n) { float x0, y0, x1, y1, width; GLint i; @@ -182,7 +182,7 @@ GLenum StarPoint(GLint n) } } -void ShowStars(void) +static void ShowStars(void) { GLint n; @@ -221,7 +221,7 @@ static void Init(void) glDisable(GL_DITHER); } -void Reshape(int width, int height) +static void Reshape(int width, int height) { windW = (GLint)width; @@ -262,7 +262,7 @@ static void Key(unsigned char key, int x, int y) } } -void Idle(void) +static void Idle(void) { if (overlayInit == GL_FALSE) { diff --git a/progs/samples/rgbtoppm.c b/progs/samples/rgbtoppm.c index 116d9a8cfa..403578ef42 100644 --- a/progs/samples/rgbtoppm.c +++ b/progs/samples/rgbtoppm.c @@ -3,6 +3,7 @@ /* texload is a simplistic routine for reading an SGI .rgb image file. */ +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -25,7 +26,7 @@ typedef struct _ImageRec { int *rowSize; } ImageRec; -void +static void rgbtorgb(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *l,int n) { while(n--) { l[0] = r[0]; @@ -72,6 +73,7 @@ static ImageRec *ImageOpen(char *fileName) ImageRec *image; int swapFlag; int x; + int result; endianTest.testWord = 1; if (endianTest.testByte[0] == 1) { @@ -86,13 +88,20 @@ static ImageRec *ImageOpen(char *fileName) exit(1); } if ((image->file = fopen(fileName, "rb")) == NULL) { - return NULL; + free(image); + return NULL; } - fread(image, 1, 12, image->file); + result = fread(image, 1, 12, image->file); + assert(result == 12); if (swapFlag) { - ConvertShort(&image->imagic, 6); + ConvertShort(&image->imagic, 1); + ConvertShort(&image->type, 1); + ConvertShort(&image->dim, 1); + ConvertShort(&image->xsize, 1); + ConvertShort(&image->ysize, 1); + ConvertShort(&image->zsize, 1); } image->tmp = (unsigned char *)malloc(image->xsize*256); @@ -111,8 +120,10 @@ static ImageRec *ImageOpen(char *fileName) } image->rleEnd = 512 + (2 * x); fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); + result = fread(image->rowStart, 1, x, image->file); + assert(result == x); + result = fread(image->rowSize, 1, x, image->file); + assert(result == x); if (swapFlag) { ConvertUint(image->rowStart, x/(int) sizeof(unsigned)); ConvertUint((unsigned *)image->rowSize, x/(int) sizeof(int)); @@ -132,11 +143,13 @@ static void ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) { unsigned char *iPtr, *oPtr, pixel; int count; + int result; if ((image->type & 0xFF00) == 0x0100) { fseek(image->file, (long) image->rowStart[y+z*image->ysize], SEEK_SET); - fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], - image->file); + result = fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], + image->file); + assert(result == (unsigned int)image->rowSize[y+z*image->ysize]); iPtr = image->tmp; oPtr = buf; @@ -160,11 +173,13 @@ ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) { } else { fseek(image->file, 512+(y*image->xsize)+(z*image->xsize*image->ysize), SEEK_SET); - fread(buf, 1, image->xsize, image->file); + result = fread(buf, 1, image->xsize, image->file); + assert(result == image->xsize); } } -GLubyte * +#if 0 +static GLubyte * read_alpha_texture(char *name, int *width, int *height) { unsigned char *base, *lptr; @@ -193,8 +208,9 @@ read_alpha_texture(char *name, int *width, int *height) return (unsigned char *) base; } +#endif -GLubyte * +static GLubyte * read_rgb_texture(char *name, int *width, int *height) { unsigned char *base, *ptr; @@ -224,6 +240,7 @@ read_rgb_texture(char *name, int *width, int *height) if (gbuf) free(gbuf); if (bbuf) free(bbuf); if (abuf) free(abuf); + ImageClose(image); return NULL; } ptr = base; @@ -254,7 +271,8 @@ read_rgb_texture(char *name, int *width, int *height) int main(int argc, char **argv) { - int width, height; + int width = 0; + int height = 0; GLubyte *data; char buff[32]; int n; diff --git a/progs/samples/sphere.c b/progs/samples/sphere.c index 7d0508dee9..23d4fe32c0 100644 --- a/progs/samples/sphere.c +++ b/progs/samples/sphere.c @@ -445,7 +445,7 @@ GLfloat identity[16] = { }; -void BuildCylinder(int numEdges) +static void BuildCylinder(int numEdges) { int i, top = 1.0, bottom = -1.0; float x[100], y[100], angle; @@ -481,7 +481,7 @@ void BuildCylinder(int numEdges) glEndList(); } -void BuildTorus(float rc, int numc, float rt, int numt) +static void BuildTorus(float rc, int numc, float rt, int numt) { int i, j, k; double s, t; @@ -515,7 +515,7 @@ void BuildTorus(float rc, int numc, float rt, int numt) glEndList(); } -void BuildCage(void) +static void BuildCage(void) { int i; float inc; @@ -609,7 +609,7 @@ void BuildCage(void) glEndList(); } -void BuildCube(void) +static void BuildCube(void) { int i, j; @@ -628,7 +628,7 @@ void BuildCube(void) glEndList(); } -void BuildLists(void) +static void BuildLists(void) { cube = glGenLists(1); @@ -646,7 +646,7 @@ void BuildLists(void) genericObject = torus; } -void SetDefaultSettings(void) +static void SetDefaultSettings(void) { magFilter = nnearest; @@ -657,7 +657,7 @@ void SetDefaultSettings(void) autoRotate = GL_TRUE; } -unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha) +static unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha) { unsigned char *outData, *out_ptr, *in_ptr; int i; @@ -677,7 +677,7 @@ unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha) return outData; } -void Init(void) +static void Init(void) { float ambient[] = {0.0, 0.0, 0.0, 1.0}; float diffuse[] = {1.0, 1.0, 1.0, 1.0}; @@ -753,7 +753,7 @@ void Init(void) BuildLists(); } -void ReInit(void) +static void ReInit(void) { if (genericObject == torus) { glEnable(GL_DEPTH_TEST); @@ -773,7 +773,7 @@ void ReInit(void) glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, textureEnvironment); } -void Draw(void) +static void Draw(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); @@ -806,7 +806,7 @@ void Draw(void) glutSwapBuffers(); } -void Reshape(int width, int height) +static void Reshape(int width, int height) { W = width; H = height; @@ -818,7 +818,7 @@ void Reshape(int width, int height) glMatrixMode(GL_MODELVIEW); } -void Idle(void) +static void Idle(void) { static double t0 = -1.; double t, dt; @@ -833,7 +833,7 @@ void Idle(void) glutPostRedisplay(); } -void Key2(int key, int x, int y) +static void Key2(int key, int x, int y) { switch (key) { @@ -863,7 +863,7 @@ void Key2(int key, int x, int y) glutPostRedisplay(); } -void Key(unsigned char key, int x, int y) +static void Key(unsigned char key, int x, int y) { switch (key) { @@ -950,7 +950,7 @@ void Key(unsigned char key, int x, int y) glutPostRedisplay(); } -GLenum Args(int argc, char **argv) +static GLenum Args(int argc, char **argv) { GLint i; diff --git a/progs/samples/star.c b/progs/samples/star.c index 2cf470e2a2..2c44ebfd49 100644 --- a/progs/samples/star.c +++ b/progs/samples/star.c @@ -67,19 +67,19 @@ starRec stars[MAXSTARS]; float sinTable[MAXANGLES]; -float Sin(float angle) +static float Sin(float angle) { return (sinTable[(GLint)angle]); } -float Cos(float angle) +static float Cos(float angle) { return (sinTable[((GLint)angle+(MAXANGLES/4))%MAXANGLES]); } -void NewStar(GLint n, GLint d) +static void NewStar(GLint n, GLint d) { if (rand()%4 == 0) { @@ -101,7 +101,7 @@ void NewStar(GLint n, GLint d) } } -void RotatePoint(float *x, float *y, float rotation) +static void RotatePoint(float *x, float *y, float rotation) { float tmpX, tmpY; @@ -111,7 +111,7 @@ void RotatePoint(float *x, float *y, float rotation) *y = tmpY; } -void MoveStars(void) +static void MoveStars(void) { float offset; GLint n; @@ -142,7 +142,7 @@ void MoveStars(void) } } -GLenum StarPoint(GLint n) +static GLenum StarPoint(GLint n) { float x0, y0, x1, y1, width; GLint i; @@ -190,7 +190,7 @@ GLenum StarPoint(GLint n) } } -void ShowStars(void) +static void ShowStars(void) { GLint n; @@ -229,7 +229,7 @@ static void Init(void) glDisable(GL_DITHER); } -void Reshape(int width, int height) +static void Reshape(int width, int height) { windW = (GLint)width; @@ -260,7 +260,7 @@ static void Key(unsigned char key, int x, int y) } } -void Draw(void) +static void Draw(void) { MoveStars(); @@ -307,7 +307,7 @@ static GLenum Args(int argc, char **argv) #define GLUTCALLBACK #endif -void GLUTCALLBACK glut_post_redisplay_p(void) +static void GLUTCALLBACK glut_post_redisplay_p(void) { glutPostRedisplay(); } diff --git a/progs/samples/stretch.c b/progs/samples/stretch.c index 1fd015d794..11201dca23 100644 --- a/progs/samples/stretch.c +++ b/progs/samples/stretch.c @@ -67,7 +67,7 @@ int cCount, cIndex[2], cStep; GLenum op = OP_NOOP; -void DrawImage(void) +static void DrawImage(void) { glRasterPos2i(0, 0); @@ -84,7 +84,7 @@ void DrawImage(void) image->data); } -void DrawPoint(void) +static void DrawPoint(void) { int i; @@ -102,7 +102,7 @@ void DrawPoint(void) } } -void InitVList(void) +static void InitVList(void) { vList[0].x = 0.0; @@ -141,7 +141,7 @@ void InitVList(void) vList[4].tY = cList[0].y / (float)imageSizeY; } -void ScaleImage(int sizeX, int sizeY) +static void ScaleImage(int sizeX, int sizeY) { GLubyte *buf; @@ -154,7 +154,7 @@ void ScaleImage(int sizeX, int sizeY) image->sizeY = sizeY; } -void SetPoint(int x, int y) +static void SetPoint(int x, int y) { cList[cCount].x = (float)x; @@ -162,7 +162,7 @@ void SetPoint(int x, int y) cCount++; } -void Stretch(void) +static void Stretch(void) { glBegin(GL_TRIANGLES); @@ -221,7 +221,7 @@ void Stretch(void) } } -void Key(unsigned char key, int x, int y) +static void Key(unsigned char key, int x, int y) { switch (key) { @@ -245,7 +245,7 @@ void Key(unsigned char key, int x, int y) glutPostRedisplay(); } -void Mouse(int button, int state, int mouseX, int mouseY) +static void Mouse(int button, int state, int mouseX, int mouseY) { if (state != GLUT_DOWN) @@ -263,7 +263,7 @@ void Mouse(int button, int state, int mouseX, int mouseY) glutPostRedisplay(); } -void Animate(void) +static void Animate(void) { static double t0 = -1.; double t, dt; @@ -322,7 +322,7 @@ static GLenum Args(int argc, char **argv) #define GLUTCALLBACK #endif -void GLUTCALLBACK glut_post_redisplay_p(void) +static void GLUTCALLBACK glut_post_redisplay_p(void) { glutPostRedisplay(); } diff --git a/progs/samples/wave.c b/progs/samples/wave.c index d3c4687459..396a6943e3 100644 --- a/progs/samples/wave.c +++ b/progs/samples/wave.c @@ -92,7 +92,7 @@ GLubyte contourTexture2[] = { #endif -void GLUTCALLBACK glut_post_redisplay_p(void) +static void GLUTCALLBACK glut_post_redisplay_p(void) { static double t0 = -1.; double t, dt; diff --git a/progs/slang/cltest.c b/progs/slang/cltest.c index 2753f59f85..dfff6cb226 100644 --- a/progs/slang/cltest.c +++ b/progs/slang/cltest.c @@ -237,7 +237,7 @@ void RenderScene (void) if (p != NULL) p++; } - if (*p != '\0') + if (p && *p != '\0') printf ("*** %s\n", "I/O error"); nextprogram = program->next; diff --git a/progs/slang/vstest.c b/progs/slang/vstest.c index 472ea9b62e..33c6f09dc5 100644 --- a/progs/slang/vstest.c +++ b/progs/slang/vstest.c @@ -220,6 +220,12 @@ static void load_test_file (const char *filename) fseek (f, 0, SEEK_END); size = ftell (f); + + if (size == -1) { + fclose (f); + return; + } + fseek (f, 0, SEEK_SET); code = (char *) (malloc (size)); diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 197e14d5b0..836396b249 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -37,10 +37,12 @@ SOURCES = \ bug_3195.c \ bug_texstore_i8.c \ calibrate_rast.c \ + condrender.c \ copypixrate.c \ crossbar.c \ cva.c \ drawbuffers.c \ + drawbuffers2.c \ exactrast.c \ ext422square.c \ floattex.c \ @@ -98,6 +100,7 @@ SOURCES = \ texdown \ texfilt.c \ texgenmix.c \ + texleak.c \ texline.c \ texobj.c \ texobjshare.c \ diff --git a/progs/tests/SConscript b/progs/tests/SConscript index 3a0da62717..e2c6538288 100644 --- a/progs/tests/SConscript +++ b/progs/tests/SConscript @@ -1,23 +1,5 @@ Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - linux_progs = [ 'api_speed', ] @@ -59,10 +41,12 @@ progs = [ 'bug_3195', 'bug_texstore_i8', 'calibrate_rast', + 'condrender', 'copypixrate', 'crossbar', 'cva', 'drawbuffers', + 'drawbuffers2', 'exactrast', 'ext422square', 'fbotest1', @@ -138,7 +122,7 @@ progs = [ ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = prog + '.c', ) diff --git a/progs/tests/arbgpuprog.c b/progs/tests/arbgpuprog.c index 23aa899d96..6098dca787 100644 --- a/progs/tests/arbgpuprog.c +++ b/progs/tests/arbgpuprog.c @@ -134,6 +134,8 @@ static void Init( const char *vertProgFile, } len = fread(buf, 1, 10*1000,f); + fclose(f); + glProgramStringARB_func(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, len, @@ -170,6 +172,8 @@ static void Init( const char *vertProgFile, } len = fread(buf, 1, 10*1000,f); + fclose(f); + glProgramStringARB_func(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, len, diff --git a/progs/tests/bug_texstore_i8.c b/progs/tests/bug_texstore_i8.c index 10e5eba7c5..b070011bd2 100644 --- a/progs/tests/bug_texstore_i8.c +++ b/progs/tests/bug_texstore_i8.c @@ -73,7 +73,7 @@ static void Init(void) 0, sourceFormat, GL_UNSIGNED_BYTE, - //GL_UNSIGNED_INT, + /* GL_UNSIGNED_INT, */ tex2d); glEnable(Target); diff --git a/progs/tests/condrender.c b/progs/tests/condrender.c new file mode 100644 index 0000000000..1db8a7c15a --- /dev/null +++ b/progs/tests/condrender.c @@ -0,0 +1,242 @@ +/* + * Test GL_NV_conditional_render + * + * Brian Paul + * 30 Dec 2009 + * + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +#include <GL/glew.h> +#include <GL/glut.h> + +#define TEST_DISPLAY_LISTS 0 + +static GLboolean Anim = GL_TRUE; +static GLfloat Xpos = 0; +static GLuint OccQuery; +static GLint Win = 0; + + +static void Idle(void) +{ + static int lastTime = 0; + static int sign = +1; + int time = glutGet(GLUT_ELAPSED_TIME); + float step; + + if (lastTime == 0) + lastTime = time; + else if (time - lastTime < 20) /* 50Hz update */ + return; + + step = (time - lastTime) / 1000.0 * sign; + lastTime = time; + + Xpos += step; + + if (Xpos > 2.5) { + Xpos = 2.5; + sign = -1; + } + else if (Xpos < -2.5) { + Xpos = -2.5; + sign = +1; + } + glutPostRedisplay(); +} + + +static void Display( void ) +{ + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + + glEnable(GL_DEPTH_TEST); + + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + glTranslatef( 0.0, 0.0, -15.0 ); + + /* draw the occluding polygons */ + glColor3f(0, 0.6, 0.8); + glBegin(GL_QUADS); + glVertex2f(-1.6, -1.5); + glVertex2f(-0.4, -1.5); + glVertex2f(-0.4, 1.5); + glVertex2f(-1.6, 1.5); + + glVertex2f( 0.4, -1.5); + glVertex2f( 1.6, -1.5); + glVertex2f( 1.6, 1.5); + glVertex2f( 0.4, 1.5); + glEnd(); + + /* draw the test polygon with occlusion testing */ + glPushMatrix(); + glTranslatef(Xpos, 0, -0.5); + glScalef(0.3, 0.3, 1.0); + glRotatef(-90.0 * Xpos, 0, 0, 1); + +#if TEST_DISPLAY_LISTS + glNewList(10, GL_COMPILE); + glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery); + glEndList(); + glCallList(10); +#else + glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery); +#endif + + glColorMask(0, 0, 0, 0); + glDepthMask(GL_FALSE); + + glBegin(GL_POLYGON); + glVertex3f(-1, -1, 0); + glVertex3f( 1, -1, 0); + glVertex3f( 1, 1, 0); + glVertex3f(-1, 1, 0); + glEnd(); + +#if TEST_DISPLAY_LISTS + glNewList(11, GL_COMPILE); + glEndQueryARB(GL_SAMPLES_PASSED_ARB); + glEndList(); + glCallList(11); +#else + glEndQueryARB(GL_SAMPLES_PASSED_ARB); +#endif + + glColorMask(1, 1, 1, 1); + glDepthMask(GL_TRUE); + + /* Note: disable depth test here so that we'll always see the orange + * box, except when it's totally culled. + */ + glDisable(GL_DEPTH_TEST); + + glBeginConditionalRenderNV(OccQuery, GL_QUERY_WAIT_NV); + /* draw the orange rect, so we can see what's going on */ + glColor3f(0.8, 0.5, 0); + glBegin(GL_POLYGON); + glVertex3f(-1, -1, 0); + glVertex3f( 1, -1, 0); + glVertex3f( 1, 1, 0); + glVertex3f(-1, 1, 0); + glEnd(); + glEndConditionalRenderNV(); + + /* always draw white outline around orange box */ + glColor3f(1.0, 1.0, 1.0); + glBegin(GL_LINE_LOOP); + glVertex3f(-1, -1, 0); + glVertex3f( 1, -1, 0); + glVertex3f( 1, 1, 0); + glVertex3f(-1, 1, 0); + glEnd(); + + glPopMatrix(); + + glutSwapBuffers(); +} + + +static void Reshape( int width, int height ) +{ + glViewport( 0, 0, width, height ); +} + + +static void Key( unsigned char key, int x, int y ) +{ + (void) x; + (void) y; + switch (key) { + case 27: + glDeleteQueriesARB(1, &OccQuery); + glutDestroyWindow(Win); + exit(0); + break; + case ' ': + Anim = !Anim; + if (Anim) + glutIdleFunc(Idle); + else + glutIdleFunc(NULL); + break; + } + glutPostRedisplay(); +} + + +static void SpecialKey( int key, int x, int y ) +{ + const GLfloat step = 0.1; + (void) x; + (void) y; + switch (key) { + case GLUT_KEY_LEFT: + Xpos -= step; + break; + case GLUT_KEY_RIGHT: + Xpos += step; + break; + } + glutPostRedisplay(); +} + + +static void Init( void ) +{ + if (!glutExtensionSupported("GL_ARB_occlusion_query") || + !glutExtensionSupported("GL_NV_conditional_render")) { + printf("Sorry, this demo requires the extensions:\n"); + printf(" GL_ARB_occlusion_query\n"); + printf(" GL_NV_conditional_render\n"); + exit(-1); + } + + glGenQueriesARB(1, &OccQuery); + assert(OccQuery > 0); +} + + +int main( int argc, char *argv[] ) +{ + glutInitWindowSize( 400, 400 ); + glutInit( &argc, argv ); + glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); + Win = glutCreateWindow(argv[0]); + glewInit(); + glutReshapeFunc( Reshape ); + glutKeyboardFunc( Key ); + glutSpecialFunc( SpecialKey ); + glutIdleFunc( Idle ); + glutDisplayFunc( Display ); + Init(); + glutMainLoop(); + return 0; +} diff --git a/progs/tests/crossbar.c b/progs/tests/crossbar.c index bd8e05aee1..2988e20920 100644 --- a/progs/tests/crossbar.c +++ b/progs/tests/crossbar.c @@ -174,7 +174,7 @@ static void Init( void ) exit(1); } - printf("\nAll %u squares should be the same color.\n", NUM_TESTS + 1); + printf("\nAll %lu squares should be the same color.\n", (unsigned long) NUM_TESTS + 1); (void) memset( temp, 0x00, sizeof( temp ) ); glBindTexture( GL_TEXTURE_2D, 1 ); diff --git a/progs/tests/cva.c b/progs/tests/cva.c index 80483900cb..02d1dcba2e 100644 --- a/progs/tests/cva.c +++ b/progs/tests/cva.c @@ -39,7 +39,7 @@ GLboolean compiled = GL_TRUE; GLboolean doubleBuffer = GL_TRUE; -void init( void ) +static void init( void ) { glClearColor( 0.0, 0.0, 0.0, 0.0 ); glShadeModel( GL_SMOOTH ); @@ -69,7 +69,7 @@ void init( void ) #endif } -void display( void ) +static void display( void ) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); @@ -81,7 +81,7 @@ void display( void ) } } -void keyboard( unsigned char key, int x, int y ) +static void keyboard( unsigned char key, int x, int y ) { switch ( key ) { case 27: @@ -92,7 +92,7 @@ void keyboard( unsigned char key, int x, int y ) glutPostRedisplay(); } -GLboolean args( int argc, char **argv ) +static GLboolean args( int argc, char **argv ) { GLint i; diff --git a/progs/tests/drawbuffers2.c b/progs/tests/drawbuffers2.c new file mode 100644 index 0000000000..7b8cc5ca6a --- /dev/null +++ b/progs/tests/drawbuffers2.c @@ -0,0 +1,364 @@ +/* + * Test GL_ARB_draw_buffers2, GL_ARB_draw_buffers, GL_EXT_framebuffer_object + * and GLSL's gl_FragData[]. + * + * We draw to two color buffers and show the left half of the first + * color buffer on the left side of the window, and show the right + * half of the second color buffer on the right side of the window. + * + * Different color masks are used for the two color buffers. + * Blending is enabled for the second buffer only. + * + * Brian Paul + * 31 Dec 2009 + */ + + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +#include <GL/glew.h> +#include <GL/glut.h> +#include "extfuncs.h" + +static int Win; +static int Width = 400, Height = 400; +static GLuint FBobject, RBobjects[3]; +static GLfloat Xrot = 0.0, Yrot = 0.0; +static GLuint Program; +static GLboolean Anim = GL_TRUE; + + +static void +CheckError(int line) +{ + GLenum err = glGetError(); + if (err) { + printf("GL Error 0x%x at line %d\n", (int) err, line); + } +} + + +static void +Display(void) +{ + GLubyte *buffer = malloc(Width * Height * 4); + static const GLenum buffers[2] = { + GL_COLOR_ATTACHMENT0_EXT, + GL_COLOR_ATTACHMENT1_EXT + }; + + glUseProgram_func(Program); + + glEnable(GL_DEPTH_TEST); + + /* draw to user framebuffer */ + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBobject); + + /* Clear color buffer 0 (blue) */ + glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); + glClear(GL_COLOR_BUFFER_BIT); + + /* Clear color buffer 1 (1 - blue) */ + glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); + glClear(GL_COLOR_BUFFER_BIT); + + glClear(GL_DEPTH_BUFFER_BIT); + + /* draw to two buffers w/ fragment shader */ + glDrawBuffersARB(2, buffers); + + /* different color masks for each buffer */ + if (1) { + glColorMaskIndexedEXT(0, GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE); + glColorMaskIndexedEXT(1, GL_FALSE, GL_TRUE, GL_FALSE, GL_FALSE); + } + + glPushMatrix(); + glRotatef(Xrot, 1, 0, 0); + glRotatef(Yrot, 0, 1, 0); + glPushMatrix(); + glTranslatef(1, 0, 0); + glutSolidTorus(1.0, 2.0, 10, 20); + glPopMatrix(); + glPushMatrix(); + glTranslatef(-1, 0, 0); + glRotatef(90, 1, 0, 0); + glutSolidTorus(1.0, 2.0, 10, 20); + glPopMatrix(); + glPopMatrix(); + + /* restore default color masks */ + glColorMaskIndexedEXT(0, GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glColorMaskIndexedEXT(1, GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + + /* read from user framebuffer */ + /* left half = colorbuffer 0 */ + glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); + glPixelStorei(GL_PACK_ROW_LENGTH, Width); + glPixelStorei(GL_PACK_SKIP_PIXELS, 0); + glReadPixels(0, 0, Width / 2, Height, GL_RGBA, GL_UNSIGNED_BYTE, + buffer); + + /* right half = colorbuffer 1 */ + glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); + glPixelStorei(GL_PACK_SKIP_PIXELS, Width / 2); + glReadPixels(Width / 2, 0, Width - Width / 2, Height, + GL_RGBA, GL_UNSIGNED_BYTE, + buffer); + + /* draw to window */ + glUseProgram_func(0); + glDisable(GL_DEPTH_TEST); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + glWindowPos2iARB(0, 0); + glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); + + free(buffer); + glutSwapBuffers(); + CheckError(__LINE__); +} + + +static void +Idle(void) +{ + Xrot = glutGet(GLUT_ELAPSED_TIME) * 0.05; + glutPostRedisplay(); +} + + +static void +Reshape(int width, int height) +{ + float ar = (float) width / (float) height; + + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-ar, ar, -1.0, 1.0, 5.0, 35.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -20.0); + + Width = width; + Height = height; + + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[0]); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[1]); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[2]); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, + Width, Height); +} + + +static void +CleanUp(void) +{ + glDeleteFramebuffersEXT(1, &FBobject); + glDeleteRenderbuffersEXT(3, RBobjects); + glutDestroyWindow(Win); + exit(0); +} + + +static void +Key(unsigned char key, int x, int y) +{ + (void) x; + (void) y; + switch (key) { + case ' ': + Anim = !Anim; + glutIdleFunc(Anim ? Idle : NULL); + break; + case 'x': + Xrot += 5.0; + break; + case 'X': + Xrot -= 5.0; + break; + case 'y': + Yrot += 5.0; + break; + case 'Y': + Yrot -= 5.0; + break; + case 27: + CleanUp(); + break; + } + glutPostRedisplay(); +} + + +static void +CheckExtensions(void) +{ + const char *req[] = { + "GL_EXT_framebuffer_object", + "GL_ARB_draw_buffers", + "GL_EXT_draw_buffers2" + }; + + const char *version = (const char *) glGetString(GL_VERSION); + GLint numBuf; + GLint i; + + for (i = 0; i < 3; i++) { + if (!glutExtensionSupported(req[i])) { + printf("Sorry, %s extension is required!\n", req[i]); + exit(1); + } + } + if (version[0] != '2') { + printf("Sorry, OpenGL 2.0 is required!\n"); + exit(1); + } + + glGetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &numBuf); + printf("GL_MAX_DRAW_BUFFERS_ARB = %d\n", numBuf); + if (numBuf < 2) { + printf("Sorry, GL_MAX_DRAW_BUFFERS_ARB needs to be >= 2\n"); + exit(1); + } + + printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); +} + + +static void +SetupRenderbuffers(void) +{ + glGenFramebuffersEXT(1, &FBobject); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBobject); + + glGenRenderbuffersEXT(3, RBobjects); + + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[0]); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); + + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[1]); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); + + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[2]); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, + Width, Height); + + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + GL_RENDERBUFFER_EXT, RBobjects[0]); + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, + GL_RENDERBUFFER_EXT, RBobjects[1]); + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, + GL_RENDERBUFFER_EXT, RBobjects[2]); + + CheckError(__LINE__); +} + + +static GLuint +LoadAndCompileShader(GLenum target, const char *text) +{ + GLint stat; + GLuint shader = glCreateShader_func(target); + glShaderSource_func(shader, 1, (const GLchar **) &text, NULL); + glCompileShader_func(shader); + glGetShaderiv_func(shader, GL_COMPILE_STATUS, &stat); + if (!stat) { + GLchar log[1000]; + GLsizei len; + glGetShaderInfoLog_func(shader, 1000, &len, log); + fprintf(stderr, "drawbuffers: problem compiling shader:\n%s\n", log); + exit(1); + } + return shader; +} + + +static void +CheckLink(GLuint prog) +{ + GLint stat; + glGetProgramiv_func(prog, GL_LINK_STATUS, &stat); + if (!stat) { + GLchar log[1000]; + GLsizei len; + glGetProgramInfoLog_func(prog, 1000, &len, log); + fprintf(stderr, "drawbuffers: shader link error:\n%s\n", log); + } +} + + +static void +SetupShaders(void) +{ + /* emit same color to both draw buffers */ + static const char *fragShaderText = + "void main() {\n" + " gl_FragData[0] = gl_Color; \n" + " gl_FragData[1] = gl_Color; \n" + "}\n"; + + GLuint fragShader; + + fragShader = LoadAndCompileShader(GL_FRAGMENT_SHADER, fragShaderText); + Program = glCreateProgram_func(); + + glAttachShader_func(Program, fragShader); + glLinkProgram_func(Program); + CheckLink(Program); + glUseProgram_func(Program); +} + + +static void +SetupLighting(void) +{ + static const GLfloat ambient[4] = { 0.0, 0.0, 0.0, 0.0 }; + static const GLfloat diffuse[4] = { 1.0, 1.0, 1.0, 0.75 }; + + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse); + + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHTING); +} + + +static void +Init(void) +{ + CheckExtensions(); + GetExtensionFuncs(); + SetupRenderbuffers(); + SetupShaders(); + SetupLighting(); + glEnable(GL_DEPTH_TEST); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnableIndexedEXT(GL_BLEND, 1); +} + + +int +main(int argc, char *argv[]) +{ + glutInit(&argc, argv); + glutInitWindowPosition(0, 0); + glutInitWindowSize(Width, Height); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); + Win = glutCreateWindow(argv[0]); + glewInit(); + glutIdleFunc(Anim ? Idle : NULL); + glutReshapeFunc(Reshape); + glutKeyboardFunc(Key); + glutDisplayFunc(Display); + Init(); + glutMainLoop(); + return 0; +} diff --git a/progs/tests/fptest1.c b/progs/tests/fptest1.c index 2b8f8d0f5e..1f30d5733e 100644 --- a/progs/tests/fptest1.c +++ b/progs/tests/fptest1.c @@ -57,6 +57,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { +#if 0 static const char *prog0 = "!!FP1.0\n" "MUL o[COLR], R0, f[WPOS]; \n" @@ -73,6 +74,7 @@ static void Init( void ) "MOV HC, H2; \n" "END \n" ; +#endif /* masked updates, defines, declarations */ static const char *prog1 = diff --git a/progs/tests/getprocaddress.c b/progs/tests/getprocaddress.c index a09ea58e1d..e699baf44b 100644 --- a/progs/tests/getprocaddress.c +++ b/progs/tests/getprocaddress.c @@ -1188,7 +1188,7 @@ exercise_buffer_objects(enum Map_Buffer_Usage usage) GLuint bufferID; GLint bufferMapped; static GLubyte data[BUFFER_DATA_SIZE] = {0}; - float *dataPtr; + float *dataPtr = NULL; /* Get the function pointers we need. These are from * GL_ARB_vertex_buffer_object and are required in all @@ -3516,7 +3516,7 @@ check_functions( const char *extensions ) struct name_test_pair *entry; int failures = 0, passes = 0, untested = 0; int totalFail = 0, totalPass = 0, totalUntested = 0, totalUnsupported = 0; - int doTests; + int doTests = 0; const char *version = (const char *) glGetString(GL_VERSION); /* The functions list will have "real" entries (consisting of diff --git a/progs/tests/invert.c b/progs/tests/invert.c index 3bc97a460b..45001b44d0 100644 --- a/progs/tests/invert.c +++ b/progs/tests/invert.c @@ -165,7 +165,7 @@ static void Init( void ) "square should look upside-down.\n"); - image = LoadRGBImage( IMAGE_FILE, & img_width, & img_height, + image = LoadRGBImage( IMAGE_FILE, (GLint *) & img_width, (GLint *) & img_height, & img_format ); if ( image == NULL ) { printf( "Could not open image file \"%s\".\n", IMAGE_FILE ); diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c index d318cf516a..34df95549a 100644 --- a/progs/tests/packedpixels.c +++ b/progs/tests/packedpixels.c @@ -17,53 +17,53 @@ struct pixel_format { GLenum format; GLenum type; GLint bytes; - GLuint redTexel, greenTexel; + GLuint redTexel, greenTexel; /* with approx 51% alpha, when applicable */ }; static const struct pixel_format Formats[] = { { "GL_RGBA/GL_UNSIGNED_INT_8_8_8_8", - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, 4, 0xff000000, 0x00ff0000 }, + GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, 4, 0xff000080, 0x00ff0080 }, { "GL_RGBA/GL_UNSIGNED_INT_8_8_8_8_REV", - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x000000ff, 0x0000ff00 }, + GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x800000ff, 0x8000ff00 }, { "GL_RGBA/GL_UNSIGNED_INT_10_10_10_2", - GL_RGBA, GL_UNSIGNED_INT_10_10_10_2, 4, 0xffc00000, 0x3ff000 }, + GL_RGBA, GL_UNSIGNED_INT_10_10_10_2, 4, 0xffc00002, 0x3ff002 }, { "GL_RGBA/GL_UNSIGNED_INT_2_10_10_10_REV", - GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 4, 0x3ff, 0xffc00 }, + GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 4, 0xc00003ff, 0xc00ffc00 }, { "GL_RGBA/GL_UNSIGNED_SHORT_4_4_4_4", - GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0xf000, 0x0f00 }, + GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0xf008, 0x0f08 }, { "GL_RGBA/GL_UNSIGNED_SHORT_4_4_4_4_REV", - GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x000f, 0x00f0 }, + GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x800f, 0x80f0 }, { "GL_RGBA/GL_UNSIGNED_SHORT_5_5_5_1", - GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf800, 0x7c0 }, + GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf801, 0x7c1 }, { "GL_RGBA/GL_UNSIGNED_SHORT_1_5_5_5_REV", - GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x1f, 0x3e0 }, + GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x801f, 0x83e0 }, { "GL_BGRA/GL_UNSIGNED_INT_8_8_8_8", - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, 4, 0x0000ff00, 0x00ff0000 }, + GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, 4, 0x0000ff80, 0x00ff0080 }, { "GL_BGRA/GL_UNSIGNED_INT_8_8_8_8_REV", - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x00ff0000, 0x0000ff00 }, + GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x80ff0000, 0x8000ff00 }, { "GL_BGRA/GL_UNSIGNED_SHORT_4_4_4_4", - GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x00f0, 0x0f00 }, + GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x00f8, 0x0f08 }, { "GL_BGRA/GL_UNSIGNED_SHORT_4_4_4_4_REV", - GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x0f00, 0x00f0 }, + GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x8f00, 0x80f0 }, { "GL_BGRA/GL_UNSIGNED_SHORT_5_5_5_1", - GL_BGRA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x3e, 0x7c0 }, + GL_BGRA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x3f, 0x7c1 }, { "GL_BGRA/GL_UNSIGNED_SHORT_1_5_5_5_REV", - GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x7c00, 0x3e0 }, + GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0xfc00, 0x83e0 }, { "GL_ABGR_EXT/GL_UNSIGNED_INT_8_8_8_8", - GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, 4, 0x000000ff, 0x0000ff00 }, + GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, 4, 0x800000ff, 0x8000ff00 }, { "GL_ABGR_EXT/GL_UNSIGNED_INT_8_8_8_8_REV", - GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0xff000000, 0x00ff0000 }, + GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0xff000080, 0x00ff0080 }, { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_4_4_4_4", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x000f, 0x00f0 }, + GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x800f, 0x80f0 }, { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_4_4_4_4_REV", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0xf000, 0x0f00 }, + GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0xf008, 0x0f08 }, { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_5_5_5_1", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x1, 0x3e }, + GL_ABGR_EXT, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf801, 0xf83e }, { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_1_5_5_5_REV", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x8000, 0x7c00 }, + GL_ABGR_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x800f, 0x7c0f }, { "GL_RGB/GL_UNSIGNED_SHORT_5_6_5", GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 2, 0xf800, 0x7e0 }, @@ -108,7 +108,7 @@ static const struct name_format IntFormats[] = { static GLuint CurFormat = 0; static GLboolean Test3D = GL_FALSE; - +static GLboolean Blend = GL_FALSE; static void @@ -234,6 +234,10 @@ Draw(void) glEnable(GL_TEXTURE_3D); else glEnable(GL_TEXTURE_2D); + + if (Blend) + glEnable(GL_BLEND); + glBegin(GL_POLYGON); glTexCoord3f(0, 0, 0.5); glVertex2f(0, 0); glTexCoord3f(1, 0, 0.5); glVertex2f(w, 0); @@ -245,6 +249,9 @@ Draw(void) glDisable(GL_TEXTURE_3D); else glDisable(GL_TEXTURE_2D); + + glDisable(GL_BLEND); + glColor3f(0, 0, 0); glRasterPos2i(8, 6); PrintString(Formats[i].name); @@ -265,8 +272,8 @@ Draw(void) glPushMatrix(); glTranslatef(2, (i + 1) * (h + 2), 0); glRasterPos2i(8, 6); - sprintf(s, "Internal Texture Format [f/F]: %s (%d of %d)", - IntFormats[CurFormat].name, CurFormat + 1, NUM_INT_FORMATS); + sprintf(s, "Internal Texture Format [f/F]: %s (%d of %lu)", + IntFormats[CurFormat].name, CurFormat + 1, (unsigned long) NUM_INT_FORMATS); PrintString(s); glPopMatrix(); @@ -279,6 +286,15 @@ Draw(void) PrintString("Target [2/3]: GL_TEXTURE_2D"); glPopMatrix(); + glPushMatrix(); + glTranslatef(2, (i + 3) * (h + 2), 0); + glRasterPos2i(8, 6); + if (Blend) + PrintString("Blend: Yes"); + else + PrintString("Blend: No"); + glPopMatrix(); + glutSwapBuffers(); } @@ -301,6 +317,9 @@ Key(unsigned char key, int x, int y) (void) x; (void) y; switch (key) { + case 'b': + Blend = !Blend; + break; case 'F': if (CurFormat == 0) CurFormat = NUM_INT_FORMATS - 1; @@ -336,6 +355,7 @@ Init(void) glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 0241f3a249..2de7e2994a 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -192,6 +192,7 @@ static void Init( void ) GLfloat * params; GLint max_program_env_parameters; GLint max_program_local_parameters; + int i; printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); @@ -238,6 +239,10 @@ static void Init( void ) params = malloc(max_program_env_parameters * 4 * sizeof(GLfloat)); + for (i = 0; i < max_program_env_parameters * 4; i++) { + params[i] = 0.0F; + } + pass &= set_parameter_batch(max_program_env_parameters, params, "Env", program_env_parameter4fv, program_env_parameters4fv, diff --git a/progs/tests/quads.c b/progs/tests/quads.c index 2098b51ccd..e5b9920b66 100644 --- a/progs/tests/quads.c +++ b/progs/tests/quads.c @@ -17,7 +17,10 @@ static GLfloat Xrot = 40, Yrot = 0, Zrot = 0; static GLboolean Anim = GL_TRUE; static GLuint Vbuffer = 0; +#if 1 +#else static GLfloat buf[NUM_QUADS * 6 * 4]; +#endif static GLboolean doSwapBuffers = GL_TRUE; diff --git a/progs/tests/scissor-viewport.c b/progs/tests/scissor-viewport.c index 582e65fb72..4ef307b424 100644 --- a/progs/tests/scissor-viewport.c +++ b/progs/tests/scissor-viewport.c @@ -104,7 +104,7 @@ static void draw(void) glDisable(GL_SCISSOR_TEST); - //glutSwapBuffers(); + /* glutSwapBuffers(); */ glFlush(); } @@ -120,7 +120,7 @@ int main(int argc, char **argv) glutInitWindowPosition(100, 0); glutInitWindowSize(prog.width, prog.height); - //type = GLUT_RGB | GLUT_DOUBLE; + /* type = GLUT_RGB | GLUT_DOUBLE; */ type = GLUT_RGB | GLUT_SINGLE; glutInitDisplayMode(type); diff --git a/progs/tests/scissor.c b/progs/tests/scissor.c index 2dfd2174e8..e5a68ffabd 100644 --- a/progs/tests/scissor.c +++ b/progs/tests/scissor.c @@ -134,7 +134,7 @@ static void draw(void) glDisable(GL_SCISSOR_TEST); - //glutSwapBuffers(); + /* glutSwapBuffers(); */ glFlush(); } @@ -150,7 +150,7 @@ int main(int argc, char **argv) glutInitWindowPosition(100, 0); glutInitWindowSize(prog.width, prog.height); - //type = GLUT_RGB | GLUT_DOUBLE; + /* type = GLUT_RGB | GLUT_DOUBLE; */ type = GLUT_RGB | GLUT_SINGLE; glutInitDisplayMode(type); diff --git a/progs/tests/sharedtex.c b/progs/tests/sharedtex.c index c07ebd719c..2337b88d3f 100644 --- a/progs/tests/sharedtex.c +++ b/progs/tests/sharedtex.c @@ -424,13 +424,13 @@ main(int argc, char *argv[]) { const char *dpyName = XDisplayName(NULL); - struct window *h0, *h1, *h2, *h3; + struct window *h0; /* four windows and contexts sharing display lists and texture objects */ h0 = AddWindow(dpyName, 10, 10, NULL); - h1 = AddWindow(dpyName, 330, 10, h0); - h2 = AddWindow(dpyName, 10, 350, h0); - h3 = AddWindow(dpyName, 330, 350, h0); + (void) AddWindow(dpyName, 330, 10, h0); + (void) AddWindow(dpyName, 10, 350, h0); + (void) AddWindow(dpyName, 330, 350, h0); InitGLstuff(h0); diff --git a/progs/tests/stencilwrap.c b/progs/tests/stencilwrap.c index 2e219fd8b5..d396fc2a53 100644 --- a/progs/tests/stencilwrap.c +++ b/progs/tests/stencilwrap.c @@ -257,7 +257,7 @@ static void Init( void ) * part of GL 1.4. */ - ver_str = glGetString( GL_VERSION ); + ver_str = (char *) glGetString( GL_VERSION ); version = (ver_str == NULL) ? 1.0 : atof( ver_str ); wrapping = (glutExtensionSupported("GL_EXT_stencil_wrap") || (version >= 1.4)); diff --git a/progs/tests/tex1d.c b/progs/tests/tex1d.c index 4abe1068c7..7d67451c0d 100644 --- a/progs/tests/tex1d.c +++ b/progs/tests/tex1d.c @@ -39,11 +39,13 @@ static void draw( void ) +/* static void idle( void ) { Angle += 2.0; glutPostRedisplay(); } +*/ diff --git a/progs/tests/texdown.c b/progs/tests/texdown.c index 7e46045832..92df01b83d 100644 --- a/progs/tests/texdown.c +++ b/progs/tests/texdown.c @@ -162,7 +162,7 @@ MeasureDownloadRate(void) const int image_bytes = align(w * h * BytesPerTexel(Format), ALIGN); const int bytes = image_bytes * NR_TEXOBJ; GLubyte *orig_texImage, *orig_getImage; - GLubyte *texImage, *getImage; + GLubyte *texImage; GLdouble t0, t1, time; int count; int i; @@ -176,13 +176,14 @@ MeasureDownloadRate(void) orig_getImage = (GLubyte *) malloc(image_bytes + ALIGN); if (!orig_texImage || !orig_getImage) { DownloadRate = 0.0; + free(orig_texImage); + free(orig_getImage); return; } printf("alloc %p %p\n", orig_texImage, orig_getImage); texImage = (GLubyte *)align((unsigned long)orig_texImage, ALIGN); - getImage = (GLubyte *)align((unsigned long)orig_getImage, ALIGN); for (i = 1; !(((unsigned long)texImage) & i); i<<=1) ; diff --git a/progs/tests/texleak.c b/progs/tests/texleak.c new file mode 100644 index 0000000000..5cf4ff3239 --- /dev/null +++ b/progs/tests/texleak.c @@ -0,0 +1,140 @@ +/* + * 'Texture leak' test + * + * Allocates and uses an additional texture of the maximum supported size for + * each frame. This tests the system's ability to cope with using increasing + * amounts of texture memory. + * + * Michel Dänzer July 2009 This program is in the public domain. + */ + + +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/time.h> +#include <unistd.h> +#include <GL/glew.h> +#include <GL/glut.h> + + +GLint size; +GLvoid *image; +static GLuint numTexObj; +static GLuint *texObj; + + +static void Idle( void ) +{ + glutPostRedisplay(); +} + + +static void DrawObject(void) +{ + static const GLfloat tex_coords[] = { 0.0, 0.0, 1.0, 1.0, 0.0 }; + static const GLfloat vtx_coords[] = { -1.0, -1.0, 1.0, 1.0, -1.0 }; + GLint i, j; + + glEnable(GL_TEXTURE_2D); + + for (i = 0; i < numTexObj; i++) { + glBindTexture(GL_TEXTURE_2D, texObj[i]); + glBegin(GL_QUADS); + for (j = 0; j < 4; j++ ) { + glTexCoord2f(tex_coords[j], tex_coords[j+1]); + glVertex2f( vtx_coords[j], vtx_coords[j+1] ); + } + glEnd(); + } +} + + +static void Display( void ) +{ + struct timeval start, end; + + texObj = realloc(texObj, ++numTexObj * sizeof(*texObj)); + + /* allocate a texture object */ + glGenTextures(1, texObj + (numTexObj - 1)); + + glBindTexture(GL_TEXTURE_2D, texObj[numTexObj - 1]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + memset(image, (16 * numTexObj) & 0xff, 4 * size * size); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image); + + gettimeofday(&start, NULL); + + glClear( GL_COLOR_BUFFER_BIT ); + + glPushMatrix(); + glScalef(5.0, 5.0, 5.0); + DrawObject(); + glPopMatrix(); + + glutSwapBuffers(); + + glFinish(); + gettimeofday(&end, NULL); + printf("Rendering frame took %lu ms using %u MB of textures\n", + end.tv_sec * 1000 + end.tv_usec / 1000 - start.tv_sec * 1000 - + start.tv_usec / 1000, numTexObj * 4 * size / 1024 * size / 1024); + + sleep(1); +} + + +static void Reshape( int width, int height ) +{ + glViewport( 0, 0, width, height ); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + glOrtho( -6.0, 6.0, -6.0, 6.0, 10.0, 100.0 ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + glTranslatef( 0.0, 0.0, -70.0 ); +} + + +static void Init( int argc, char *argv[] ) +{ + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); + printf("%d x %d max texture size\n", size, size); + + image = malloc(4 * size * size); + if (!image) { + fprintf(stderr, "Failed to allocate %u bytes of memory\n", 4 * size * size); + exit(1); + } + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + glShadeModel(GL_FLAT); + glClearColor(0.3, 0.3, 0.4, 1.0); + + Idle(); +} + + +int main( int argc, char *argv[] ) +{ + glutInit( &argc, argv ); + glutInitWindowSize( 300, 300 ); + glutInitWindowPosition( 0, 0 ); + glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); + glutCreateWindow(argv[0] ); + glewInit(); + + Init( argc, argv ); + + glutReshapeFunc( Reshape ); + glutDisplayFunc( Display ); + glutIdleFunc(Idle); + + glutMainLoop(); + return 0; +} diff --git a/progs/tests/unfilledclip.c b/progs/tests/unfilledclip.c index db6fffa3e8..331cbf2f6b 100644 --- a/progs/tests/unfilledclip.c +++ b/progs/tests/unfilledclip.c @@ -31,6 +31,7 @@ static int win_width, win_height; +#if 0 static void line(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) { @@ -39,6 +40,7 @@ line(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) glVertex2f(x2, y2); glEnd(); } +#endif static void line3(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2) diff --git a/progs/tests/vparray.c b/progs/tests/vparray.c index af9b62d33e..fe168c6cd5 100644 --- a/progs/tests/vparray.c +++ b/progs/tests/vparray.c @@ -37,13 +37,16 @@ static void read_surface( char *filename ) } numverts = 0; - while (!feof(f) && numverts < MAXVERTS) { - fscanf( f, "%f %f %f %f %f %f", - &data[numverts][0], &data[numverts][1], &data[numverts][2], - &data[numverts][3], &data[numverts][4], &data[numverts][5] ); + while (numverts < MAXVERTS) { + int result; + result = fscanf( f, "%f %f %f %f %f %f", + &data[numverts][0], &data[numverts][1], &data[numverts][2], + &data[numverts][3], &data[numverts][4], &data[numverts][5] ); + if (result == EOF) { + break; + } numverts++; } - numverts--; printf("%d vertices, %d triangles\n", numverts, numverts-2); printf("data = %p\n", (void *) data); diff --git a/progs/tests/vpeval.c b/progs/tests/vpeval.c index f07737f973..3e8a732df5 100644 --- a/progs/tests/vpeval.c +++ b/progs/tests/vpeval.c @@ -94,16 +94,16 @@ GLfloat colorPoints[4][4][4] = }; -void +static void initlights(void) { +#if 0 /* no lighting for now */ GLfloat ambient[] = {0.2, 0.2, 0.2, 1.0}; GLfloat position[] = {0.0, 0.0, 2.0, 1.0}; GLfloat mat_diffuse[] = {0.6, 0.6, 0.6, 1.0}; GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0}; GLfloat mat_shininess[] = {50.0}; -#if 0 /* no lighting for now */ glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); @@ -116,7 +116,7 @@ initlights(void) #endif } -void +static void display(void) { glClearColor(.3, .3, .3, 0); @@ -130,7 +130,7 @@ display(void) glFlush(); } -void +static void myinit(int argc, char *argv[]) { glClearColor(0.0, 0.0, 0.0, 1.0); @@ -186,7 +186,7 @@ myinit(int argc, char *argv[]) } } -void +static void myReshape(int w, int h) { glViewport(0, 0, w, h); diff --git a/progs/trivial/.gitignore b/progs/trivial/.gitignore index 4d6e405c50..4317eb607f 100644 --- a/progs/trivial/.gitignore +++ b/progs/trivial/.gitignore @@ -147,6 +147,7 @@ vbo-drawarrays vbo-drawelements vbo-drawrange vbo-noninterleaved +vbo-tri vp-array vp-array-int vp-clip diff --git a/progs/trivial/Makefile b/progs/trivial/Makefile index 70728616d2..e15ec33ab5 100644 --- a/progs/trivial/Makefile +++ b/progs/trivial/Makefile @@ -153,6 +153,7 @@ SOURCES = \ tristrip-clip.c \ tristrip-flat.c \ tristrip.c \ + vbo-tri.c \ vbo-drawarrays.c \ vbo-noninterleaved.c \ vbo-drawelements.c \ diff --git a/progs/trivial/SConscript b/progs/trivial/SConscript index 9a1f3575bd..613383c77b 100644 --- a/progs/trivial/SConscript +++ b/progs/trivial/SConscript @@ -1,11 +1,4 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) +Import('*') progs = [ 'clear-fbo-tex', @@ -154,7 +147,7 @@ progs = [ ] for prog in progs: - prog = env.Program( + prog = progs_env.Program( target = prog, source = prog + '.c', ) diff --git a/progs/trivial/clear-fbo-tex.c b/progs/trivial/clear-fbo-tex.c index a206676e48..ff31706fd1 100644 --- a/progs/trivial/clear-fbo-tex.c +++ b/progs/trivial/clear-fbo-tex.c @@ -88,7 +88,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); @@ -102,8 +102,8 @@ static void Draw( void ) /* draw to texture image */ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); -// glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); -// glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); + /* glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); */ + /* glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); */ glViewport(0, 0, TexWidth, TexHeight); diff --git a/progs/trivial/clear-fbo.c b/progs/trivial/clear-fbo.c index 0aeb45489f..6435c901ad 100644 --- a/progs/trivial/clear-fbo.c +++ b/progs/trivial/clear-fbo.c @@ -73,7 +73,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/clear-random.c b/progs/trivial/clear-random.c index e3da23a8f5..ab67f84518 100644 --- a/progs/trivial/clear-random.c +++ b/progs/trivial/clear-random.c @@ -61,7 +61,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(0); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/clear-scissor.c b/progs/trivial/clear-scissor.c index 0173532748..2b6dee77a9 100644 --- a/progs/trivial/clear-scissor.c +++ b/progs/trivial/clear-scissor.c @@ -38,7 +38,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); } diff --git a/progs/trivial/clear.c b/progs/trivial/clear.c index 03857b4b89..56c3ea52e6 100644 --- a/progs/trivial/clear.c +++ b/progs/trivial/clear.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(0); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/createwin.c b/progs/trivial/createwin.c index f2cc6f1cff..93da30ee29 100644 --- a/progs/trivial/createwin.c +++ b/progs/trivial/createwin.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); @@ -116,6 +116,6 @@ int main(int argc, char **argv) glutReshapeFunc(Reshape); glutKeyboardFunc(Key); glutDisplayFunc(Draw); -// glutMainLoop(); + /* glutMainLoop(); */ return 0; } diff --git a/progs/trivial/dlist-begin-call-end.c b/progs/trivial/dlist-begin-call-end.c index 0d0aed7c72..dbfaef3978 100644 --- a/progs/trivial/dlist-begin-call-end.c +++ b/progs/trivial/dlist-begin-call-end.c @@ -49,7 +49,7 @@ static void Init(void) */ first_list = glGenLists(1); glNewList(first_list, GL_COMPILE); -// glColor3f(0,1,0); + /* glColor3f(0,1,0); */ glEndList(); @@ -87,7 +87,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-dangling.c b/progs/trivial/dlist-dangling.c index de10628009..756ab93f87 100644 --- a/progs/trivial/dlist-dangling.c +++ b/progs/trivial/dlist-dangling.c @@ -74,7 +74,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-edgeflag-dangling.c b/progs/trivial/dlist-edgeflag-dangling.c index 3d3aaeb694..51504471e2 100644 --- a/progs/trivial/dlist-edgeflag-dangling.c +++ b/progs/trivial/dlist-edgeflag-dangling.c @@ -76,7 +76,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-edgeflag.c b/progs/trivial/dlist-edgeflag.c index 8002129ed1..9456b96473 100644 --- a/progs/trivial/dlist-edgeflag.c +++ b/progs/trivial/dlist-edgeflag.c @@ -81,7 +81,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-flat-tri.c b/progs/trivial/dlist-flat-tri.c index c3dd7921e3..3ee9b283a4 100644 --- a/progs/trivial/dlist-flat-tri.c +++ b/progs/trivial/dlist-flat-tri.c @@ -93,7 +93,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-mat-tri.c b/progs/trivial/dlist-mat-tri.c index ed3a4c5981..d17c4b913b 100644 --- a/progs/trivial/dlist-mat-tri.c +++ b/progs/trivial/dlist-mat-tri.c @@ -103,7 +103,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-recursive-call.c b/progs/trivial/dlist-recursive-call.c index fe06b2bbd7..90224f63cb 100644 --- a/progs/trivial/dlist-recursive-call.c +++ b/progs/trivial/dlist-recursive-call.c @@ -118,7 +118,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-tri-flat-tri.c b/progs/trivial/dlist-tri-flat-tri.c index 4dbb788486..3265a4d6dc 100644 --- a/progs/trivial/dlist-tri-flat-tri.c +++ b/progs/trivial/dlist-tri-flat-tri.c @@ -99,7 +99,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/dlist-tri-mat-tri.c b/progs/trivial/dlist-tri-mat-tri.c index f69854ae58..053bb124a2 100644 --- a/progs/trivial/dlist-tri-mat-tri.c +++ b/progs/trivial/dlist-tri-mat-tri.c @@ -102,7 +102,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/draw2arrays.c b/progs/trivial/draw2arrays.c index 95a89981d3..2345ae9e9e 100644 --- a/progs/trivial/draw2arrays.c +++ b/progs/trivial/draw2arrays.c @@ -66,7 +66,7 @@ static void Display( void ) glEnable(GL_VERTEX_PROGRAM_ARB); -// glDrawArrays( GL_TRIANGLES, 0, 3 ); + /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ glDrawArrays( GL_TRIANGLES, 1, 3 ); glFlush(); diff --git a/progs/trivial/drawarrays.c b/progs/trivial/drawarrays.c index 27d86682f7..f5c0a50f9a 100644 --- a/progs/trivial/drawarrays.c +++ b/progs/trivial/drawarrays.c @@ -77,7 +77,7 @@ static void Display( void ) glEnable(GL_VERTEX_PROGRAM_ARB); -// glDrawArrays( GL_TRIANGLES, 0, 3 ); + /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ glDrawArrays( GL_TRIANGLES, 1, 3 ); glFlush(); diff --git a/progs/trivial/line-clip.c b/progs/trivial/line-clip.c index 5276baffd5..e4e388ed5c 100644 --- a/progs/trivial/line-clip.c +++ b/progs/trivial/line-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-cull.c b/progs/trivial/line-cull.c index 1e1b77a942..c531ff132f 100644 --- a/progs/trivial/line-cull.c +++ b/progs/trivial/line-cull.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-flat.c b/progs/trivial/line-flat.c index 14f0ac0782..e2ddb87b9e 100644 --- a/progs/trivial/line-flat.c +++ b/progs/trivial/line-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-stipple-wide.c b/progs/trivial/line-stipple-wide.c index 1804ffad3f..767583bbea 100644 --- a/progs/trivial/line-stipple-wide.c +++ b/progs/trivial/line-stipple-wide.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-userclip-clip.c b/progs/trivial/line-userclip-clip.c index 8e030b47ce..3265b2c3bf 100644 --- a/progs/trivial/line-userclip-clip.c +++ b/progs/trivial/line-userclip-clip.c @@ -66,7 +66,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-userclip-nop-clip.c b/progs/trivial/line-userclip-nop-clip.c index 6fcd4bcfe7..0198e27807 100644 --- a/progs/trivial/line-userclip-nop-clip.c +++ b/progs/trivial/line-userclip-nop-clip.c @@ -66,7 +66,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-userclip-nop.c b/progs/trivial/line-userclip-nop.c index e59fd133a5..6c863a3c82 100644 --- a/progs/trivial/line-userclip-nop.c +++ b/progs/trivial/line-userclip-nop.c @@ -66,7 +66,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-userclip.c b/progs/trivial/line-userclip.c index e30be5580b..6cfcb6fc73 100644 --- a/progs/trivial/line-userclip.c +++ b/progs/trivial/line-userclip.c @@ -66,7 +66,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line-wide.c b/progs/trivial/line-wide.c index b74021dea7..1945712c5d 100644 --- a/progs/trivial/line-wide.c +++ b/progs/trivial/line-wide.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/line.c b/progs/trivial/line.c index e1d73280bf..58ab96836f 100644 --- a/progs/trivial/line.c +++ b/progs/trivial/line.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/lineloop-clip.c b/progs/trivial/lineloop-clip.c index 45fa47491f..5e6b6217a1 100644 --- a/progs/trivial/lineloop-clip.c +++ b/progs/trivial/lineloop-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/lineloop.c b/progs/trivial/lineloop.c index c290dbd8cb..82eccd24f8 100644 --- a/progs/trivial/lineloop.c +++ b/progs/trivial/lineloop.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/linestrip-clip.c b/progs/trivial/linestrip-clip.c index f252822921..5e90ea2eb0 100644 --- a/progs/trivial/linestrip-clip.c +++ b/progs/trivial/linestrip-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/linestrip-flat-stipple.c b/progs/trivial/linestrip-flat-stipple.c index 5caa724423..bae5c3a1c3 100644 --- a/progs/trivial/linestrip-flat-stipple.c +++ b/progs/trivial/linestrip-flat-stipple.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/linestrip-stipple-wide.c b/progs/trivial/linestrip-stipple-wide.c index 701c82c266..0296941a0d 100644 --- a/progs/trivial/linestrip-stipple-wide.c +++ b/progs/trivial/linestrip-stipple-wide.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/linestrip-stipple.c b/progs/trivial/linestrip-stipple.c index df2eef96b5..a847d47dee 100644 --- a/progs/trivial/linestrip-stipple.c +++ b/progs/trivial/linestrip-stipple.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/linestrip.c b/progs/trivial/linestrip.c index 0219b1ab70..b6d6882146 100644 --- a/progs/trivial/linestrip.c +++ b/progs/trivial/linestrip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/point-clip.c b/progs/trivial/point-clip.c index 4c89ba598d..23cfd77863 100644 --- a/progs/trivial/point-clip.c +++ b/progs/trivial/point-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/point-param.c b/progs/trivial/point-param.c index 6f43720a89..46bd773265 100644 --- a/progs/trivial/point-param.c +++ b/progs/trivial/point-param.c @@ -59,7 +59,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); } diff --git a/progs/trivial/point-sprite.c b/progs/trivial/point-sprite.c index 5d29a6a3cf..16e6771514 100644 --- a/progs/trivial/point-sprite.c +++ b/progs/trivial/point-sprite.c @@ -96,7 +96,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/point-wide-smooth.c b/progs/trivial/point-wide-smooth.c index f6e9b8df5f..752cb8aee3 100644 --- a/progs/trivial/point-wide-smooth.c +++ b/progs/trivial/point-wide-smooth.c @@ -63,7 +63,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/point-wide.c b/progs/trivial/point-wide.c index 8abd64c6a9..3b00ee9e50 100644 --- a/progs/trivial/point-wide.c +++ b/progs/trivial/point-wide.c @@ -63,7 +63,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/point.c b/progs/trivial/point.c index 49959dcc48..8f5299cf6b 100644 --- a/progs/trivial/point.c +++ b/progs/trivial/point.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/poly-flat-clip.c b/progs/trivial/poly-flat-clip.c index 5490068b08..2a968bed40 100644 --- a/progs/trivial/poly-flat-clip.c +++ b/progs/trivial/poly-flat-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/poly-flat-unfilled-clip.c b/progs/trivial/poly-flat-unfilled-clip.c index 26b90ef964..89f4e0656a 100644 --- a/progs/trivial/poly-flat-unfilled-clip.c +++ b/progs/trivial/poly-flat-unfilled-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/poly-flat.c b/progs/trivial/poly-flat.c index a4e3cdb633..33c2e04e0f 100644 --- a/progs/trivial/poly-flat.c +++ b/progs/trivial/poly-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/poly-unfilled.c b/progs/trivial/poly-unfilled.c index 2ad443dc15..c8c0d7a9e3 100644 --- a/progs/trivial/poly-unfilled.c +++ b/progs/trivial/poly-unfilled.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/poly.c b/progs/trivial/poly.c index e5b788ea5b..964eb42d78 100644 --- a/progs/trivial/poly.c +++ b/progs/trivial/poly.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-clip-all-vertices.c b/progs/trivial/quad-clip-all-vertices.c index 60c87fc9ce..7712d8ca5b 100644 --- a/progs/trivial/quad-clip-all-vertices.c +++ b/progs/trivial/quad-clip-all-vertices.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-clip.c b/progs/trivial/quad-clip.c index 063de6106a..2847c9f960 100644 --- a/progs/trivial/quad-clip.c +++ b/progs/trivial/quad-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-degenerate.c b/progs/trivial/quad-degenerate.c index fdc142bcd6..85e129d4be 100644 --- a/progs/trivial/quad-degenerate.c +++ b/progs/trivial/quad-degenerate.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-flat.c b/progs/trivial/quad-flat.c index e3147b3b3f..bed98e31a4 100644 --- a/progs/trivial/quad-flat.c +++ b/progs/trivial/quad-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-offset-factor.c b/progs/trivial/quad-offset-factor.c index dfe99bbae6..1fc57a54ae 100644 --- a/progs/trivial/quad-offset-factor.c +++ b/progs/trivial/quad-offset-factor.c @@ -55,7 +55,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-offset-unfilled.c b/progs/trivial/quad-offset-unfilled.c index 06590021fe..62f50fb98c 100644 --- a/progs/trivial/quad-offset-unfilled.c +++ b/progs/trivial/quad-offset-unfilled.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-offset-units.c b/progs/trivial/quad-offset-units.c index 922529d977..1ac2338692 100644 --- a/progs/trivial/quad-offset-units.c +++ b/progs/trivial/quad-offset-units.c @@ -55,7 +55,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-tex-alpha.c b/progs/trivial/quad-tex-alpha.c index eebaf9170e..9db6792fad 100644 --- a/progs/trivial/quad-tex-alpha.c +++ b/progs/trivial/quad-tex-alpha.c @@ -88,7 +88,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-tex-pbo.c b/progs/trivial/quad-tex-pbo.c index ad41a9a22e..b7aa1db436 100644 --- a/progs/trivial/quad-tex-pbo.c +++ b/progs/trivial/quad-tex-pbo.c @@ -105,7 +105,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-unfilled-clip.c b/progs/trivial/quad-unfilled-clip.c index 761878bd4b..d2e8718775 100644 --- a/progs/trivial/quad-unfilled-clip.c +++ b/progs/trivial/quad-unfilled-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-unfilled-stipple.c b/progs/trivial/quad-unfilled-stipple.c index cd7d276928..8c1737e675 100644 --- a/progs/trivial/quad-unfilled-stipple.c +++ b/progs/trivial/quad-unfilled-stipple.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad-unfilled.c b/progs/trivial/quad-unfilled.c index d64f17fdf9..b756449d7a 100644 --- a/progs/trivial/quad-unfilled.c +++ b/progs/trivial/quad-unfilled.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quad.c b/progs/trivial/quad.c index d360e309d3..582de783d5 100644 --- a/progs/trivial/quad.c +++ b/progs/trivial/quad.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quads.c b/progs/trivial/quads.c index fe11fef207..de7854a255 100644 --- a/progs/trivial/quads.c +++ b/progs/trivial/quads.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quadstrip-cont.c b/progs/trivial/quadstrip-cont.c index 329523531a..44412698dc 100644 --- a/progs/trivial/quadstrip-cont.c +++ b/progs/trivial/quadstrip-cont.c @@ -57,7 +57,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quadstrip-flat.c b/progs/trivial/quadstrip-flat.c index 228c6c255e..0e0b3b49fa 100644 --- a/progs/trivial/quadstrip-flat.c +++ b/progs/trivial/quadstrip-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/quadstrip.c b/progs/trivial/quadstrip.c index d49a9a5302..1be815fb8c 100644 --- a/progs/trivial/quadstrip.c +++ b/progs/trivial/quadstrip.c @@ -57,7 +57,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/readpixels.c b/progs/trivial/readpixels.c index 5671618446..b063f17956 100644 --- a/progs/trivial/readpixels.c +++ b/progs/trivial/readpixels.c @@ -39,7 +39,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(0); default: - return; + break; } glutPostRedisplay(); } diff --git a/progs/trivial/tri-alpha-tex.c b/progs/trivial/tri-alpha-tex.c index 780ebe6be5..853d564ae7 100644 --- a/progs/trivial/tri-alpha-tex.c +++ b/progs/trivial/tri-alpha-tex.c @@ -88,7 +88,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-alpha.c b/progs/trivial/tri-alpha.c index aec1cbb377..bd1c88ecf8 100644 --- a/progs/trivial/tri-alpha.c +++ b/progs/trivial/tri-alpha.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-blend-color.c b/progs/trivial/tri-blend-color.c index 92f019259e..629b35c4ab 100644 --- a/progs/trivial/tri-blend-color.c +++ b/progs/trivial/tri-blend-color.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-blend-max.c b/progs/trivial/tri-blend-max.c index b39f8f3f12..b173dab8ec 100644 --- a/progs/trivial/tri-blend-max.c +++ b/progs/trivial/tri-blend-max.c @@ -83,7 +83,7 @@ static void drawRightTriangle(void) glDisable (GL_BLEND); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -99,7 +99,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -111,7 +111,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/trivial/tri-blend-min.c b/progs/trivial/tri-blend-min.c index 656297c0ce..629139acae 100644 --- a/progs/trivial/tri-blend-min.c +++ b/progs/trivial/tri-blend-min.c @@ -83,7 +83,7 @@ static void drawRightTriangle(void) glDisable (GL_BLEND); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -99,7 +99,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -111,7 +111,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/trivial/tri-blend-revsub.c b/progs/trivial/tri-blend-revsub.c index fe225f1f4e..ef1e92c85d 100644 --- a/progs/trivial/tri-blend-revsub.c +++ b/progs/trivial/tri-blend-revsub.c @@ -83,7 +83,7 @@ static void drawRightTriangle(void) glDisable (GL_BLEND); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -99,7 +99,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -111,7 +111,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/trivial/tri-blend-sub.c b/progs/trivial/tri-blend-sub.c index cc1aeaf4a4..3c560ae6ef 100644 --- a/progs/trivial/tri-blend-sub.c +++ b/progs/trivial/tri-blend-sub.c @@ -83,7 +83,7 @@ static void drawRightTriangle(void) glDisable (GL_BLEND); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -99,7 +99,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -111,7 +111,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/trivial/tri-blend.c b/progs/trivial/tri-blend.c index 58c451c976..f41be89b09 100644 --- a/progs/trivial/tri-blend.c +++ b/progs/trivial/tri-blend.c @@ -81,7 +81,7 @@ static void drawRightTriangle(void) glDisable (GL_BLEND); } -void display(void) +static void display(void) { glClear(GL_COLOR_BUFFER_BIT); @@ -97,7 +97,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -109,7 +109,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 't': diff --git a/progs/trivial/tri-clear.c b/progs/trivial/tri-clear.c index f49186bd8a..e52ed81bf4 100644 --- a/progs/trivial/tri-clear.c +++ b/progs/trivial/tri-clear.c @@ -63,7 +63,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-clip.c b/progs/trivial/tri-clip.c index e1deca1bdc..3e3879c985 100644 --- a/progs/trivial/tri-clip.c +++ b/progs/trivial/tri-clip.c @@ -56,7 +56,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); } diff --git a/progs/trivial/tri-cull-both.c b/progs/trivial/tri-cull-both.c index 864be710c2..809599d4a6 100644 --- a/progs/trivial/tri-cull-both.c +++ b/progs/trivial/tri-cull-both.c @@ -65,7 +65,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-dlist.c b/progs/trivial/tri-dlist.c index c410be221a..62d0a965d8 100644 --- a/progs/trivial/tri-dlist.c +++ b/progs/trivial/tri-dlist.c @@ -75,7 +75,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-fbo-tex.c b/progs/trivial/tri-fbo-tex.c index 72b4cf3683..8d1f871328 100644 --- a/progs/trivial/tri-fbo-tex.c +++ b/progs/trivial/tri-fbo-tex.c @@ -189,9 +189,6 @@ Key(unsigned char key, int x, int y) static void Init(int argc, char *argv[]) { - static const GLfloat mat[4] = { 1.0, 0.5, 0.5, 1.0 }; - GLint i; - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { printf("GL_EXT_framebuffer_object not found!\n"); exit(0); diff --git a/progs/trivial/tri-fbo.c b/progs/trivial/tri-fbo.c index 1ed177ffdf..089180f97a 100644 --- a/progs/trivial/tri-fbo.c +++ b/progs/trivial/tri-fbo.c @@ -75,7 +75,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-flat-clip.c b/progs/trivial/tri-flat-clip.c index 2aab5ba00a..a23f8a382b 100644 --- a/progs/trivial/tri-flat-clip.c +++ b/progs/trivial/tri-flat-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-flat.c b/progs/trivial/tri-flat.c index ea703ec6f3..0614321844 100644 --- a/progs/trivial/tri-flat.c +++ b/progs/trivial/tri-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-fog.c b/progs/trivial/tri-fog.c index 0cea3d3258..7fc254a467 100644 --- a/progs/trivial/tri-fog.c +++ b/progs/trivial/tri-fog.c @@ -72,7 +72,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-fp-const-imm.c b/progs/trivial/tri-fp-const-imm.c index d2df442abf..accea62042 100644 --- a/progs/trivial/tri-fp-const-imm.c +++ b/progs/trivial/tri-fp-const-imm.c @@ -92,7 +92,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-fp.c b/progs/trivial/tri-fp.c index 4d1508120e..6ecfef4d2a 100644 --- a/progs/trivial/tri-fp.c +++ b/progs/trivial/tri-fp.c @@ -42,7 +42,7 @@ static void Init(void) static const char *prog1 = "!!ARBfp1.0\n" "MOV result.color, fragment.texcoord[1];\n" -// "MOV result.color, fragment.color;\n" + /* "MOV result.color, fragment.color;\n" */ "END\n"; @@ -90,7 +90,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-lit-material.c b/progs/trivial/tri-lit-material.c index ff9fb2c4dd..16cebb2b98 100644 --- a/progs/trivial/tri-lit-material.c +++ b/progs/trivial/tri-lit-material.c @@ -65,7 +65,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-lit.c b/progs/trivial/tri-lit.c index 15a7ad24c5..26ebd99d91 100644 --- a/progs/trivial/tri-lit.c +++ b/progs/trivial/tri-lit.c @@ -65,7 +65,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-logicop-none.c b/progs/trivial/tri-logicop-none.c index 53c2614ac3..2b6a3d6f5c 100644 --- a/progs/trivial/tri-logicop-none.c +++ b/progs/trivial/tri-logicop-none.c @@ -101,7 +101,7 @@ static void Draw(void) glVertex3f( 0.5, -0.5, -30.0); glEnd(); -// glLineWidth(12.0); + /* glLineWidth(12.0); */ /* Redraw parts of the lines: */ diff --git a/progs/trivial/tri-logicop-xor.c b/progs/trivial/tri-logicop-xor.c index f018a851ac..b8207cd6d8 100644 --- a/progs/trivial/tri-logicop-xor.c +++ b/progs/trivial/tri-logicop-xor.c @@ -105,7 +105,7 @@ static void Draw(void) glVertex3f( 0.5, -0.5, -30.0); glEnd(); -// glLineWidth(12.0); + /* glLineWidth(12.0); */ /* Redraw parts of the lines to remove them: */ diff --git a/progs/trivial/tri-multitex-vbo.c b/progs/trivial/tri-multitex-vbo.c index e319447ac1..ca4edaa5dd 100644 --- a/progs/trivial/tri-multitex-vbo.c +++ b/progs/trivial/tri-multitex-vbo.c @@ -192,7 +192,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-orig.c b/progs/trivial/tri-orig.c index e7cfee3a36..f86ac52a02 100644 --- a/progs/trivial/tri-orig.c +++ b/progs/trivial/tri-orig.c @@ -51,7 +51,7 @@ static void Reshape(int width, int height) glMatrixMode(GL_PROJECTION); glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ + glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); glMatrixMode(GL_MODELVIEW); } @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); @@ -74,11 +74,11 @@ static void Draw(void) glBegin(GL_TRIANGLES); glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); + glVertex3f( 0.9, -0.9, -30.0); glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); + glVertex3f( 0.9, 0.9, -30.0); glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); + glVertex3f(-0.9, 0.0, -30.0); glEnd(); glFlush(); @@ -119,7 +119,7 @@ int main(int argc, char **argv) glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - type = GLUT_RGB | GLUT_ALPHA; + type = GLUT_RGB; type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; glutInitDisplayMode(type); diff --git a/progs/trivial/tri-query.c b/progs/trivial/tri-query.c index 94956a86f3..8898f182c7 100644 --- a/progs/trivial/tri-query.c +++ b/progs/trivial/tri-query.c @@ -72,7 +72,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-scissor-tri.c b/progs/trivial/tri-scissor-tri.c index 608ebf29cf..d65502d91b 100644 --- a/progs/trivial/tri-scissor-tri.c +++ b/progs/trivial/tri-scissor-tri.c @@ -63,7 +63,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-square.c b/progs/trivial/tri-square.c index 0b82a1dd8e..2014bd489c 100644 --- a/progs/trivial/tri-square.c +++ b/progs/trivial/tri-square.c @@ -63,7 +63,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-stipple.c b/progs/trivial/tri-stipple.c index aa94fa224b..15a08fec7c 100644 --- a/progs/trivial/tri-stipple.c +++ b/progs/trivial/tri-stipple.c @@ -77,7 +77,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-tex-3d.c b/progs/trivial/tri-tex-3d.c index 3ccbe12510..073a080d7a 100644 --- a/progs/trivial/tri-tex-3d.c +++ b/progs/trivial/tri-tex-3d.c @@ -97,7 +97,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-tex.c b/progs/trivial/tri-tex.c index 56afb4748d..244e154504 100644 --- a/progs/trivial/tri-tex.c +++ b/progs/trivial/tri-tex.c @@ -94,7 +94,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-tri.c b/progs/trivial/tri-tri.c index f996bd01a1..7bf400793e 100644 --- a/progs/trivial/tri-tri.c +++ b/progs/trivial/tri-tri.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-clip.c b/progs/trivial/tri-unfilled-clip.c index 2fd894a49a..585919e16d 100644 --- a/progs/trivial/tri-unfilled-clip.c +++ b/progs/trivial/tri-unfilled-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-edgeflag.c b/progs/trivial/tri-unfilled-edgeflag.c index 11c21d1bf6..f536f64229 100644 --- a/progs/trivial/tri-unfilled-edgeflag.c +++ b/progs/trivial/tri-unfilled-edgeflag.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-point.c b/progs/trivial/tri-unfilled-point.c index 750a254669..11e276e1a5 100644 --- a/progs/trivial/tri-unfilled-point.c +++ b/progs/trivial/tri-unfilled-point.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-smooth.c b/progs/trivial/tri-unfilled-smooth.c index eddae176e5..fa31667e65 100644 --- a/progs/trivial/tri-unfilled-smooth.c +++ b/progs/trivial/tri-unfilled-smooth.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-tri-lit.c b/progs/trivial/tri-unfilled-tri-lit.c index 1d42b40b71..d6baeb4697 100644 --- a/progs/trivial/tri-unfilled-tri-lit.c +++ b/progs/trivial/tri-unfilled-tri-lit.c @@ -65,7 +65,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-tri.c b/progs/trivial/tri-unfilled-tri.c index 695cc89095..75a70b8a41 100644 --- a/progs/trivial/tri-unfilled-tri.c +++ b/progs/trivial/tri-unfilled-tri.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-userclip-stip.c b/progs/trivial/tri-unfilled-userclip-stip.c index ddc0dffd4f..02bfa92f83 100644 --- a/progs/trivial/tri-unfilled-userclip-stip.c +++ b/progs/trivial/tri-unfilled-userclip-stip.c @@ -67,7 +67,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled-userclip.c b/progs/trivial/tri-unfilled-userclip.c index 0dec0bfc9b..11e53fc7cc 100644 --- a/progs/trivial/tri-unfilled-userclip.c +++ b/progs/trivial/tri-unfilled-userclip.c @@ -66,7 +66,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-unfilled.c b/progs/trivial/tri-unfilled.c index b98cb9a842..afa1058dad 100644 --- a/progs/trivial/tri-unfilled.c +++ b/progs/trivial/tri-unfilled.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-userclip.c b/progs/trivial/tri-userclip.c index 8f37e0fae2..5651c73832 100644 --- a/progs/trivial/tri-userclip.c +++ b/progs/trivial/tri-userclip.c @@ -66,7 +66,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-z-9.c b/progs/trivial/tri-z-9.c index 099e89f6f4..37b9e2f873 100644 --- a/progs/trivial/tri-z-9.c +++ b/progs/trivial/tri-z-9.c @@ -61,7 +61,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-z-eq.c b/progs/trivial/tri-z-eq.c index b81c992f7d..6bdac47419 100644 --- a/progs/trivial/tri-z-eq.c +++ b/progs/trivial/tri-z-eq.c @@ -61,7 +61,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tri-z.c b/progs/trivial/tri-z.c index 014aaa071a..092249dd76 100644 --- a/progs/trivial/tri-z.c +++ b/progs/trivial/tri-z.c @@ -101,7 +101,7 @@ static void drawRightTriangle(void) glEnd(); } -void display(void) +static void display(void) { printf("GL_CLEAR_DEPTH = %.2f, GL_DEPTH_FUNC = %s, DepthRange(%.1f, %.1f)\n", clearVal, funcs[curFunc].str, minZ, maxZ); @@ -124,7 +124,7 @@ void display(void) glFlush(); } -void reshape(int w, int h) +static void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); @@ -136,7 +136,7 @@ void reshape(int w, int h) } /* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) +static void keyboard(unsigned char key, int x, int y) { switch (key) { case 'n': diff --git a/progs/trivial/trifan-flat-clip.c b/progs/trivial/trifan-flat-clip.c index 199f91a637..89bc471191 100644 --- a/progs/trivial/trifan-flat-clip.c +++ b/progs/trivial/trifan-flat-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/trifan-flat-unfilled-clip.c b/progs/trivial/trifan-flat-unfilled-clip.c index ea3e155387..3a1a226e54 100644 --- a/progs/trivial/trifan-flat-unfilled-clip.c +++ b/progs/trivial/trifan-flat-unfilled-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/trifan-flat.c b/progs/trivial/trifan-flat.c index d69b4887e3..d25abdf49e 100644 --- a/progs/trivial/trifan-flat.c +++ b/progs/trivial/trifan-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/trifan-unfilled.c b/progs/trivial/trifan-unfilled.c index 91447e4e44..2e3ff8218f 100644 --- a/progs/trivial/trifan-unfilled.c +++ b/progs/trivial/trifan-unfilled.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/trifan.c b/progs/trivial/trifan.c index 84eb4172de..b8a7615114 100644 --- a/progs/trivial/trifan.c +++ b/progs/trivial/trifan.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tristrip-clip.c b/progs/trivial/tristrip-clip.c index 343e293804..4e6ee1fbca 100644 --- a/progs/trivial/tristrip-clip.c +++ b/progs/trivial/tristrip-clip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tristrip-flat.c b/progs/trivial/tristrip-flat.c index 02da97efce..a90b8b6cb6 100644 --- a/progs/trivial/tristrip-flat.c +++ b/progs/trivial/tristrip-flat.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/tristrip.c b/progs/trivial/tristrip.c index 77bf2fad28..29915ff111 100644 --- a/progs/trivial/tristrip.c +++ b/progs/trivial/tristrip.c @@ -62,7 +62,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/vbo-drawarrays.c b/progs/trivial/vbo-drawarrays.c index c29954b903..cb26e84115 100644 --- a/progs/trivial/vbo-drawarrays.c +++ b/progs/trivial/vbo-drawarrays.c @@ -83,7 +83,7 @@ static void Display( void ) glEnable(GL_VERTEX_PROGRAM_ARB); -// glDrawArrays( GL_TRIANGLES, 0, 3 ); + /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ glDrawArrays( GL_TRIANGLES, 1, 3 ); glFlush(); diff --git a/progs/trivial/vbo-noninterleaved.c b/progs/trivial/vbo-noninterleaved.c index 0672ca50ff..f7c42a8981 100644 --- a/progs/trivial/vbo-noninterleaved.c +++ b/progs/trivial/vbo-noninterleaved.c @@ -87,8 +87,8 @@ static void Display( void ) glEnable(GL_VERTEX_PROGRAM_ARB); -// glDrawArrays( GL_TRIANGLES, 0, 3 ); -// glDrawArrays( GL_TRIANGLES, 1, 3 ); + /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ + /* glDrawArrays( GL_TRIANGLES, 1, 3 ); */ glDrawArrays( GL_QUADS, 0, 4 ); glFlush(); diff --git a/progs/trivial/vbo-tri.c b/progs/trivial/vbo-tri.c new file mode 100644 index 0000000000..d4cba14414 --- /dev/null +++ b/progs/trivial/vbo-tri.c @@ -0,0 +1,131 @@ +/* Even simpler for many drivers than trivial/tri -- pass-through + * vertex shader and vertex data in a VBO. + */ + +#include <assert.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +#include <GL/glew.h> +#include <GL/glut.h> + + +struct { + GLfloat pos[4]; + GLfloat color[4]; +} verts[] = +{ + { { -0.9, -0.9, 0.0, 1.0 }, + {.8,0,0, 1}, + }, + + { { 0.9, -0.9, 0.0, 1.0 }, + { 0, .9, 0, 1 }, + }, + + { { 0, 0.9, 0.0, 1.0 }, + {0,0,.7, 1}, + }, +}; + +GLuint arrayObj; + +static void Init( void ) +{ + GLint errno; + GLuint prognum; + + static const char *prog1 = + "!!ARBvp1.0\n" + "MOV result.color, vertex.color;\n" + "MOV result.position, vertex.position;\n" + "END\n"; + + + glGenProgramsARB(1, &prognum); + + glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); + glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, + strlen(prog1), (const GLubyte *) prog1); + + assert(glIsProgramARB(prognum)); + errno = glGetError(); + printf("glGetError = %d\n", errno); + if (errno != GL_NO_ERROR) + { + GLint errorpos; + + glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); + printf("errorpos: %d\n", errorpos); + printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); + } + + + glEnableClientState( GL_VERTEX_ARRAY ); + glEnableClientState( GL_COLOR_ARRAY ); + + glGenBuffersARB(1, &arrayObj); + glBindBufferARB(GL_ARRAY_BUFFER_ARB, arrayObj); + glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), verts, GL_STATIC_DRAW_ARB); + + glVertexPointer( 4, GL_FLOAT, sizeof(verts[0]), 0 ); + glColorPointer( 4, GL_FLOAT, sizeof(verts[0]), (void *)(4*sizeof(float)) ); +} + + + +static void Display( void ) +{ + glClearColor(0.3, 0.3, 0.3, 1); + glClear( GL_COLOR_BUFFER_BIT ); + + glEnable(GL_VERTEX_PROGRAM_NV); + glDrawArrays( GL_TRIANGLES, 0, 3 ); + + glutSwapBuffers(); +} + + +static void Reshape( int width, int height ) +{ + glViewport( 0, 0, width, height ); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + /*glTranslatef( 0.0, 0.0, -15.0 );*/ +} + + +static void Key( unsigned char key, int x, int y ) +{ + (void) x; + (void) y; + switch (key) { + case 27: + exit(0); + break; + } + glutPostRedisplay(); +} + + + + +int main( int argc, char *argv[] ) +{ + glutInit( &argc, argv ); + glutInitWindowPosition( 0, 0 ); + glutInitWindowSize( 250, 250 ); + glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); + glutCreateWindow(argv[0]); + glewInit(); + glutReshapeFunc( Reshape ); + glutKeyboardFunc( Key ); + glutDisplayFunc( Display ); + Init(); + glutMainLoop(); + return 0; +} diff --git a/progs/trivial/vp-tri-cb-pos.c b/progs/trivial/vp-tri-cb-pos.c index 42bf9806b1..9cbc4d1193 100644 --- a/progs/trivial/vp-tri-cb-pos.c +++ b/progs/trivial/vp-tri-cb-pos.c @@ -81,7 +81,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/vp-tri-cb-tex.c b/progs/trivial/vp-tri-cb-tex.c index 8290226675..e543e2ec3f 100644 --- a/progs/trivial/vp-tri-cb-tex.c +++ b/progs/trivial/vp-tri-cb-tex.c @@ -114,7 +114,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/trivial/vp-tri-invariant.c b/progs/trivial/vp-tri-invariant.c index ff24139365..4dbe95eb9a 100644 --- a/progs/trivial/vp-tri-invariant.c +++ b/progs/trivial/vp-tri-invariant.c @@ -69,7 +69,7 @@ static void Key(unsigned char key, int x, int y) case 27: exit(1); default: - return; + break; } glutPostRedisplay(); diff --git a/progs/util/readtex.c b/progs/util/readtex.c index 8e923b6eb4..f6f511481c 100644 --- a/progs/util/readtex.c +++ b/progs/util/readtex.c @@ -9,6 +9,7 @@ #include <GL/gl.h> #include <GL/glu.h> +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -89,6 +90,7 @@ static rawImageRec *RawImageOpen(const char *fileName) rawImageRec *raw; GLenum swapFlag; int x; + size_t result; endianTest.testWord = 1; if (endianTest.testByte[0] == 1) { @@ -109,14 +111,21 @@ static rawImageRec *RawImageOpen(const char *fileName) raw->file = fopen(baseName + 1, "rb"); if(raw->file == NULL) { perror(fileName); + free(raw); return NULL; } } - fread(raw, 1, 12, raw->file); + result = fread(raw, 1, 12, raw->file); + assert(result == 12); if (swapFlag) { - ConvertShort(&raw->imagic, 6); + ConvertShort(&raw->imagic, 1); + ConvertShort(&raw->type, 1); + ConvertShort(&raw->dim, 1); + ConvertShort(&raw->sizeX, 1); + ConvertShort(&raw->sizeY, 1); + ConvertShort(&raw->sizeZ, 1); } raw->tmp = (unsigned char *)malloc(raw->sizeX*256); @@ -129,6 +138,12 @@ static rawImageRec *RawImageOpen(const char *fileName) if (raw->tmp == NULL || raw->tmpR == NULL || raw->tmpG == NULL || raw->tmpB == NULL) { fprintf(stderr, "Out of memory!\n"); + free(raw->tmp); + free(raw->tmpR); + free(raw->tmpG); + free(raw->tmpB); + free(raw->tmpA); + free(raw); return NULL; } @@ -138,12 +153,22 @@ static rawImageRec *RawImageOpen(const char *fileName) raw->rowSize = (GLint *)malloc(x); if (raw->rowStart == NULL || raw->rowSize == NULL) { fprintf(stderr, "Out of memory!\n"); + free(raw->tmp); + free(raw->tmpR); + free(raw->tmpG); + free(raw->tmpB); + free(raw->tmpA); + free(raw->rowStart); + free(raw->rowSize); + free(raw); return NULL; } raw->rleEnd = 512 + (2 * x); fseek(raw->file, 512, SEEK_SET); - fread(raw->rowStart, 1, x, raw->file); - fread(raw->rowSize, 1, x, raw->file); + result = fread(raw->rowStart, 1, x, raw->file); + assert(result == x); + result = fread(raw->rowSize, 1, x, raw->file); + assert(result == x); if (swapFlag) { ConvertLong(raw->rowStart, (long) (x/sizeof(GLuint))); ConvertLong((GLuint *)raw->rowSize, (long) (x/sizeof(GLint))); @@ -173,11 +198,13 @@ static void RawImageGetRow(rawImageRec *raw, unsigned char *buf, int y, int z) { unsigned char *iPtr, *oPtr, pixel; int count, done = 0; + size_t result; if ((raw->type & 0xFF00) == 0x0100) { fseek(raw->file, (long) raw->rowStart[y+z*raw->sizeY], SEEK_SET); - fread(raw->tmp, 1, (unsigned int)raw->rowSize[y+z*raw->sizeY], - raw->file); + result = fread(raw->tmp, 1, (unsigned int)raw->rowSize[y+z*raw->sizeY], + raw->file); + assert(result == (unsigned int)raw->rowSize[y+z*raw->sizeY]); iPtr = raw->tmp; oPtr = buf; @@ -202,7 +229,8 @@ static void RawImageGetRow(rawImageRec *raw, unsigned char *buf, int y, int z) } else { fseek(raw->file, 512+(y*raw->sizeX)+(z*raw->sizeX*raw->sizeY), SEEK_SET); - fread(buf, 1, raw->sizeX, raw->file); + result = fread(buf, 1, raw->sizeX, raw->file); + assert(result == raw->sizeX); } } @@ -215,6 +243,7 @@ static void RawImageGetData(rawImageRec *raw, TK_RGBImageRec *final) final->data = (unsigned char *)malloc((raw->sizeX+1)*(raw->sizeY+1)*4); if (final->data == NULL) { fprintf(stderr, "Out of memory!\n"); + return; } ptr = final->data; @@ -250,6 +279,7 @@ static TK_RGBImageRec *tkRGBImageLoad(const char *fileName) final = (TK_RGBImageRec *)malloc(sizeof(TK_RGBImageRec)); if (final == NULL) { fprintf(stderr, "Out of memory!\n"); + RawImageClose(raw); return NULL; } final->sizeX = raw->sizeX; @@ -305,6 +335,7 @@ GLboolean LoadRGBMipmaps2( const char *imageFile, GLenum target, fprintf(stderr, "Error in LoadRGBMipmaps %d-component images not implemented\n", image->components ); + FreeImage(image); return GL_FALSE; } @@ -356,6 +387,7 @@ GLubyte *LoadRGBImage( const char *imageFile, GLint *width, GLint *height, fprintf(stderr, "Error in LoadRGBImage %d-component images not implemented\n", image->components ); + FreeImage(image); return NULL; } @@ -364,8 +396,10 @@ GLubyte *LoadRGBImage( const char *imageFile, GLint *width, GLint *height, bytes = image->sizeX * image->sizeY * image->components; buffer = (GLubyte *) malloc(bytes); - if (!buffer) + if (!buffer) { + FreeImage(image); return NULL; + } memcpy( (void *) buffer, (void *) image->data, bytes ); @@ -438,6 +472,7 @@ GLushort *LoadYUVImage( const char *imageFile, GLint *width, GLint *height ) fprintf(stderr, "Error in LoadYUVImage %d-component images not implemented\n", image->components ); + FreeImage(image); return NULL; } diff --git a/progs/util/shaderutil.c b/progs/util/shaderutil.c index af50d64f51..2f44c388d8 100644 --- a/progs/util/shaderutil.c +++ b/progs/util/shaderutil.c @@ -25,7 +25,11 @@ GLboolean ShadersSupported(void) { const char *version = (const char *) glGetString(GL_VERSION); - if (version[0] == '2' && version[1] == '.') { + + /* NVIDIA binary drivers will return "3.0.0", and they clearly support + * shaders. + */ + if (version[0] >= '2' && version[1] == '.') { return GL_TRUE; } else if (glutExtensionSupported("GL_ARB_vertex_shader") @@ -34,7 +38,8 @@ ShadersSupported(void) fprintf(stderr, "Warning: Trying ARB GLSL instead of OpenGL 2.x. This may not work.\n"); return GL_TRUE; } - return GL_TRUE; + fprintf(stderr, "Sorry, GLSL not supported with this OpenGL.\n"); + return GL_FALSE; } @@ -95,6 +100,7 @@ CompileShaderFile(GLenum shaderType, const char *filename) shader = CompileShaderText(shaderType, buffer); } else { + fclose(f); free(buffer); return 0; } diff --git a/progs/vp/SConscript b/progs/vp/SConscript index 640c5dd847..787cb793af 100644 --- a/progs/vp/SConscript +++ b/progs/vp/SConscript @@ -1,13 +1,6 @@ -Import('env') +Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) - -env.Program( +progs_env.Program( target = 'vp-tris', source = ['vp-tris.c'], ) diff --git a/progs/vp/add-param-imm.txt b/progs/vp/add-param-imm.txt new file mode 100644 index 0000000000..90bcf96528 --- /dev/null +++ b/progs/vp/add-param-imm.txt @@ -0,0 +1,7 @@ +!!ARBvp1.0 +TEMP R0; +PARAM Emission = state.material.emission; +ADD R0, vertex.color, {-0.5}.x; +ADD result.color, R0, Emission.w; +MOV result.position, vertex.position; +END diff --git a/progs/vp/vp-tris.c b/progs/vp/vp-tris.c index 1356242d97..09236c296f 100644 --- a/progs/vp/vp-tris.c +++ b/progs/vp/vp-tris.c @@ -96,12 +96,15 @@ static void Init( void ) exit(1); } - sz = (GLuint) fread(buf, 1, sizeof(buf), f); + sz = (GLuint) fread(buf, 1, sizeof(buf) - 1, f); + buf[sizeof(buf) - 1] = '\0'; if (!feof(f)) { fprintf(stderr, "file too long\n"); + fclose(f); exit(1); } + fclose(f); fprintf(stderr, "%.*s\n", sz, buf); if (strncmp( buf, "!!VP", 4 ) == 0) { diff --git a/progs/vpglsl/SConscript b/progs/vpglsl/SConscript index 640c5dd847..787cb793af 100644 --- a/progs/vpglsl/SConscript +++ b/progs/vpglsl/SConscript @@ -1,13 +1,6 @@ -Import('env') +Import('*') -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) - -env.Program( +progs_env.Program( target = 'vp-tris', source = ['vp-tris.c'], ) diff --git a/progs/vpglsl/psiz-mul.glsl b/progs/vpglsl/psiz-mul.glsl index 77f4a46b52..d2a90d8578 100644 --- a/progs/vpglsl/psiz-mul.glsl +++ b/progs/vpglsl/psiz-mul.glsl @@ -1,6 +1,6 @@ void main() { gl_FrontColor = gl_Color; - gl_PointSize = 10 * gl_Color.x; + gl_PointSize = 10.0 * gl_Color.x; gl_Position = gl_Vertex; } diff --git a/progs/vpglsl/vp-tris.c b/progs/vpglsl/vp-tris.c index b2b0508091..6a1fa3d3bf 100644 --- a/progs/vpglsl/vp-tris.c +++ b/progs/vpglsl/vp-tris.c @@ -84,9 +84,9 @@ static void check_link(GLuint prog) static void setup_uniforms() { { - GLuint loc1f = glGetUniformLocationARB(program, "Offset1f"); - GLuint loc2f = glGetUniformLocationARB(program, "Offset2f"); - GLuint loc4f = glGetUniformLocationARB(program, "Offset4f"); + GLint loc1f = glGetUniformLocationARB(program, "Offset1f"); + GLint loc2f = glGetUniformLocationARB(program, "Offset2f"); + GLint loc4f = glGetUniformLocationARB(program, "Offset4f"); GLfloat vecKer[] = { 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, @@ -105,9 +105,9 @@ static void setup_uniforms() } { - GLuint loc1f = glGetUniformLocationARB(program, "KernelValue1f"); - GLuint loc2f = glGetUniformLocationARB(program, "KernelValue2f"); - GLuint loc4f = glGetUniformLocationARB(program, "KernelValue4f"); + GLint loc1f = glGetUniformLocationARB(program, "KernelValue1f"); + GLint loc2f = glGetUniformLocationARB(program, "KernelValue2f"); + GLint loc4f = glGetUniformLocationARB(program, "KernelValue4f"); GLfloat vecKer[] = { 1.0, 0.0, 0.0, 0.25, 0.0, 1.0, 0.0, 0.25, diff --git a/progs/wgl/SConscript b/progs/wgl/SConscript index 31f61676de..248cc53a8d 100644 --- a/progs/wgl/SConscript +++ b/progs/wgl/SConscript @@ -1,25 +1,17 @@ Import('*') -if env['platform'] != 'windows': +if progs_env['platform'] != 'windows': Return() -env = env.Clone() - -env.Append(LIBS = [ - 'kernel32', - 'user32', - 'gdi32', -]) - progs = [ 'sharedtex_mt', 'wglthreads', ] for prog in progs: - env.Program( + progs_env.Program( target = prog, source = prog + '/' + prog + '.c', ) -env.Program('wglinfo', ['wglinfo.c']) +progs_env.Program('wglinfo', ['wglinfo.c']) diff --git a/progs/xdemos/.gitignore b/progs/xdemos/.gitignore index 1b9b3a87c0..5ae0f5a062 100644 --- a/progs/xdemos/.gitignore +++ b/progs/xdemos/.gitignore @@ -26,3 +26,4 @@ xdemo xfont xrotfontdemo yuvrect_client +msctest diff --git a/progs/xdemos/Makefile b/progs/xdemos/Makefile index 53e1c54ef3..f866a32865 100644 --- a/progs/xdemos/Makefile +++ b/progs/xdemos/Makefile @@ -8,6 +8,9 @@ INCDIR = $(TOP)/include LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) +# Add X11 and pthread libs to satisfy GNU gold. +APP_LIB_DEPS += -lX11 -lpthread + LIBS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(APP_LIB_DEPS) PROGS = \ @@ -26,6 +29,7 @@ PROGS = \ glxsnoop \ glxswapcontrol \ manywin \ + msctest \ multictx \ offset \ overlay \ diff --git a/progs/xdemos/corender.c b/progs/xdemos/corender.c index f2b8145e52..640c902c13 100644 --- a/progs/xdemos/corender.c +++ b/progs/xdemos/corender.c @@ -55,6 +55,7 @@ setup_ipc(void) printf("Waiting for connection from another 'corender'\n"); Sock = AcceptConnection(k); + assert(Sock != -1); printf("Got connection, sending windowID\n"); @@ -186,7 +187,7 @@ redraw(Display *dpy) * Without this glClear(), depth buffer for the second process * is pretty much broken. */ - //glClear(GL_DEPTH_BUFFER_BIT); + /* glClear(GL_DEPTH_BUFFER_BIT); */ glPushMatrix(); glTranslatef(1, 0, 0); diff --git a/progs/xdemos/glsync.c b/progs/xdemos/glsync.c index da87306cf2..c00ba9e468 100644 --- a/progs/xdemos/glsync.c +++ b/progs/xdemos/glsync.c @@ -59,6 +59,7 @@ void (*video_sync_get)(); void (*video_sync)(); +void (*swap_interval)(); static int GLXExtensionSupported(Display *dpy, const char *extension) { @@ -84,12 +85,12 @@ static int GLXExtensionSupported(Display *dpy, const char *extension) extern char *optarg; extern int optind, opterr, optopt; -static char optstr[] = "w:h:s:v"; +static char optstr[] = "w:h:s:vi:"; enum sync_type { none = 0, sgi_video_sync, - buffer_swap, + buffer_swap }; static void usage(char *name) @@ -100,6 +101,7 @@ static void usage(char *name) printf("\t\tn: none\n"); printf("\t\ts: SGI video sync extension\n"); printf("\t\tb: buffer swap\n"); + printf("\t-i<swap interval>\n"); printf("\t-v: verbose (print count)\n"); exit(-1); } @@ -109,16 +111,28 @@ int main(int argc, char *argv[]) Display *disp; XVisualInfo *pvi; XSetWindowAttributes swa; - int attrib[14]; GLint last_val = -1, count = 0; Window winGL; GLXContext context; int dummy; Atom wmDelete; enum sync_type waitforsync = none; - int width = 500, height = 500, verbose = 0, - countonly = 0; + int width = 500, height = 500, verbose = 0, interval = 1; int c, i = 1; + int ret; + int attribs[] = { GLX_RGBA, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + None }; + int db_attribs[] = { GLX_RGBA, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + GLX_DOUBLEBUFFER, + GLX_DEPTH_SIZE, 1, + None }; + XSizeHints sizehints; opterr = 0; while ((c = getopt(argc, argv, optstr)) != -1) { @@ -148,6 +162,9 @@ int main(int argc, char *argv[]) case 'v': verbose = 1; break; + case 'i': + interval = atoi(optarg); + break; default: usage(argv[0]); break; @@ -170,34 +187,17 @@ int main(int argc, char *argv[]) return -1; } - attrib[0] = GLX_RGBA; - attrib[1] = 1; - attrib[2] = GLX_RED_SIZE; - attrib[3] = 1; - attrib[4] = GLX_GREEN_SIZE; - attrib[5] = 1; - attrib[6] = GLX_BLUE_SIZE; - attrib[7] = 1; - if (waitforsync != buffer_swap) - attrib[8] = None; - else { - attrib[8] = GLX_DOUBLEBUFFER; - attrib[9] = 1; - attrib[10] = None; + if (waitforsync != buffer_swap) { + pvi = glXChooseVisual(disp, DefaultScreen(disp), attribs); + } else { + pvi = glXChooseVisual(disp, DefaultScreen(disp), db_attribs); } - pvi = glXChooseVisual(disp, DefaultScreen(disp), attrib); if (!pvi) { fprintf(stderr, "failed to choose visual, exiting\n"); return -1; } - context = glXCreateContext(disp, pvi, None, GL_TRUE); - if (!context) { - fprintf(stderr, "failed to create glx context\n"); - return -1; - } - pvi->screen = DefaultScreen(disp); swa.colormap = XCreateColormap(disp, RootWindow(disp, pvi->screen), @@ -217,24 +217,58 @@ int main(int argc, char *argv[]) wmDelete = XInternAtom(disp, "WM_DELETE_WINDOW", True); XSetWMProtocols(disp, winGL, &wmDelete, 1); + sizehints.x = 0; + sizehints.y = 0; + sizehints.width = width; + sizehints.height = height; + sizehints.flags = USSize | USPosition; + + XSetNormalHints(disp, winGL, &sizehints); XSetStandardProperties(disp, winGL, "glsync test", "glsync text", - None, NULL, 0, NULL); + None, NULL, 0, &sizehints); - XMapRaised(disp, winGL); + context = glXCreateContext(disp, pvi, NULL, GL_TRUE); + if (!context) { + fprintf(stderr, "failed to create glx context\n"); + return -1; + } - glXMakeCurrent(disp, winGL, context); + XMapWindow(disp, winGL); + ret = glXMakeCurrent(disp, winGL, context); + if (ret) { + fprintf(stderr, "failed to make context current: %d\n", ret); + } video_sync_get = glXGetProcAddress((unsigned char *)"glXGetVideoSyncSGI"); video_sync = glXGetProcAddress((unsigned char *)"glXWaitVideoSyncSGI"); - if (!video_sync_get || !video_sync) { + swap_interval = glXGetProcAddress((unsigned char *)"glXSwapIntervalSGI"); + + if (!video_sync_get || !video_sync || !swap_interval) { fprintf(stderr, "failed to get sync functions\n"); return -1; } + if (waitforsync == buffer_swap) { + swap_interval(interval); + fprintf(stderr, "set swap interval to %d\n", interval); + } video_sync_get(&count); count++; + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); while (i++) { + /* Alternate colors to make tearing obvious */ + if (i & 1) { + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + glColor3f(1.0f, 1.0f, 1.0f); + } else { + glClearColor(1.0f, 0.0f, 0.0f, 0.0f); + glColor3f(1.0f, 0.0f, 0.0f); + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glRectf(0, 0, width, height); + /* Wait for vsync */ if (waitforsync == sgi_video_sync) { if (verbose) @@ -245,24 +279,19 @@ int main(int argc, char *argv[]) if (count == last_val) fprintf(stderr, "error: count didn't change: %d\n", count); last_val = count; + glFlush(); } else if (waitforsync == buffer_swap) { glXSwapBuffers(disp, winGL); + } else { + video_sync_get(&count); + sleep(1); + glFinish(); } - if (countonly) { - video_sync(2, 1, &count); + if (verbose) { + video_sync_get(&count); fprintf(stderr, "current count: %d\n", count); - sleep(1); - continue; } - - /* Alternate colors to make tearing obvious */ - if (i & 1) - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - else - glClearColor(1.0f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); } XDestroyWindow(disp, winGL); diff --git a/progs/xdemos/glxheads.c b/progs/xdemos/glxheads.c index b1a63d3d50..edae0a3ef7 100644 --- a/progs/xdemos/glxheads.c +++ b/progs/xdemos/glxheads.c @@ -145,14 +145,40 @@ AddHead(const char *displayName) /* save the info for this head */ { struct head *h = &Heads[NumHeads]; + const char * tmp; + + if (strlen(displayName) + 1 > sizeof(h->DisplayName)) { + Error(displayName, "displayName string length overflow"); + return NULL; + } strcpy(h->DisplayName, displayName); + h->Dpy = dpy; h->Win = win; h->Context = ctx; h->Angle = 0.0; - strcpy(h->Version, (char *) glGetString(GL_VERSION)); - strcpy(h->Vendor, (char *) glGetString(GL_VENDOR)); - strcpy(h->Renderer, (char *) glGetString(GL_RENDERER)); + + tmp = (char *) glGetString(GL_VERSION); + if (strlen(tmp) + 1 > sizeof(h->Version)) { + Error(displayName, "GL_VERSION string length overflow"); + return NULL; + } + strcpy(h->Version, tmp); + + tmp = (char *) glGetString(GL_VENDOR); + if (strlen(tmp) + 1 > sizeof(h->Vendor)) { + Error(displayName, "GL_VENDOR string length overflow"); + return NULL; + } + strcpy(h->Vendor, tmp); + + tmp = (char *) glGetString(GL_RENDERER); + if (strlen(tmp) + 1 > sizeof(h->Renderer)) { + Error(displayName, "GL_RENDERER string length overflow"); + return NULL; + } + strcpy(h->Renderer, tmp); + NumHeads++; return &Heads[NumHeads-1]; } diff --git a/progs/xdemos/glxinfo.c b/progs/xdemos/glxinfo.c index 445d3ea94b..30cd568064 100644 --- a/progs/xdemos/glxinfo.c +++ b/progs/xdemos/glxinfo.c @@ -116,7 +116,7 @@ print_extension_list(const char *ext) return; width = indent; - printf(indentString); + printf("%s", indentString); i = j = 0; while (1) { if (ext[j] == ' ' || ext[j] == 0) { @@ -126,7 +126,7 @@ print_extension_list(const char *ext) /* start a new line */ printf("\n"); width = indent; - printf(indentString); + printf("%s", indentString); } /* print the extension name between ext[i] and ext[j] */ while (i < j) { @@ -401,6 +401,10 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits) root = RootWindow(dpy, scrnum); + /* + * Find a basic GLX visual. We'll then create a rendering context and + * query various info strings. + */ visinfo = glXChooseVisual(dpy, scrnum, attribSingle); if (!visinfo) visinfo = glXChooseVisual(dpy, scrnum, attribDouble); @@ -409,26 +413,29 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits) ctx = glXCreateContext( dpy, visinfo, NULL, allowDirect ); #ifdef GLX_VERSION_1_3 - { + /* Try glXChooseFBConfig() if glXChooseVisual didn't work. + * XXX when would that happen? + */ + if (!visinfo) { int fbAttribSingle[] = { GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, GL_TRUE, + GLX_DOUBLEBUFFER, GL_FALSE, None }; int fbAttribDouble[] = { GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, + GLX_DOUBLEBUFFER, GL_TRUE, None }; GLXFBConfig *configs = NULL; int nConfigs; - if (!visinfo) - configs = glXChooseFBConfig(dpy, scrnum, fbAttribSingle, &nConfigs); - if (!visinfo) + configs = glXChooseFBConfig(dpy, scrnum, fbAttribSingle, &nConfigs); + if (!configs) configs = glXChooseFBConfig(dpy, scrnum, fbAttribDouble, &nConfigs); if (configs) { @@ -964,8 +971,10 @@ print_fbconfig_info(Display *dpy, int scrnum, InfoMode mode) /* get list of all fbconfigs on this screen */ fbconfigs = glXGetFBConfigs(dpy, scrnum, &numFBConfigs); - if (numFBConfigs == 0) + if (numFBConfigs == 0) { + XFree(fbconfigs); return; + } printf("%d GLXFBConfigs:\n", numFBConfigs); if (mode == Normal) diff --git a/progs/xdemos/glxpbdemo.c b/progs/xdemos/glxpbdemo.c index 91fd30dcaa..ecf318ec6a 100644 --- a/progs/xdemos/glxpbdemo.c +++ b/progs/xdemos/glxpbdemo.c @@ -106,6 +106,7 @@ MakePbuffer( Display *dpy, int screen, int width, int height ) if (0 == nConfigs || !fbConfigs) { printf("Error: glxChooseFBConfig failed\n"); + XFree(fbConfigs); XCloseDisplay(dpy); return 0; } diff --git a/progs/xdemos/manywin.c b/progs/xdemos/manywin.c index ee357f32a4..3b0810b2e5 100644 --- a/progs/xdemos/manywin.c +++ b/progs/xdemos/manywin.c @@ -177,14 +177,40 @@ AddHead(const char *displayName, const char *name) /* save the info for this head */ { struct head *h = &Heads[NumHeads]; + const char * tmp; + + if (strlen(name) + 1 > sizeof(h->DisplayName)) { + Error(displayName, "name string overflow"); + return NULL; + } strcpy(h->DisplayName, name); + h->Dpy = dpy; h->Win = win; h->Context = ctx; h->Angle = 0.0; - strcpy(h->Version, (char *) glGetString(GL_VERSION)); - strcpy(h->Vendor, (char *) glGetString(GL_VENDOR)); - strcpy(h->Renderer, (char *) glGetString(GL_RENDERER)); + + tmp = (char *) glGetString(GL_VERSION); + if (strlen(tmp) + 1 > sizeof(h->Version)) { + Error(displayName, "GL_VERSION string overflow"); + return NULL; + } + strcpy(h->Version, tmp); + + tmp = (char *) glGetString(GL_VENDOR); + if (strlen(tmp) + 1 > sizeof(h->Vendor)) { + Error(displayName, "GL_VENDOR string overflow"); + return NULL; + } + strcpy(h->Vendor, tmp); + + tmp = (char *) glGetString(GL_RENDERER); + if (strlen(tmp) + 1 > sizeof(h->Renderer)) { + Error(displayName, "GL_RENDERER string overflow"); + return NULL; + } + strcpy(h->Renderer, tmp); + NumHeads++; return &Heads[NumHeads-1]; } diff --git a/progs/xdemos/msctest.c b/progs/xdemos/msctest.c new file mode 100644 index 0000000000..001ecf04d6 --- /dev/null +++ b/progs/xdemos/msctest.c @@ -0,0 +1,202 @@ +/* + * Copyright © 2009 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Jesse Barnes <jesse.barnes@intel.com> + * + */ + +/** @file msctest.c + * Simple test for MSC functionality. + */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <GL/gl.h> +#include <GL/glu.h> +#include <GL/glx.h> +#include <GL/glxext.h> +#include <X11/X.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +void (*get_sync_values)(Display *dpy, Window winGL, int64_t *ust, int64_t *msc, int64_t *sbc); +void (*wait_sync)(Display *dpy, Window winGL, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); + +static int GLXExtensionSupported(Display *dpy, const char *extension) +{ + const char *extensionsString, *client_extensions, *pos; + + extensionsString = glXQueryExtensionsString(dpy, DefaultScreen(dpy)); + client_extensions = glXGetClientString(dpy, GLX_EXTENSIONS); + + pos = strstr(extensionsString, extension); + + if (pos != NULL && (pos == extensionsString || pos[-1] == ' ') && + (pos[strlen(extension)] == ' ' || pos[strlen(extension)] == '\0')) + return 1; + + pos = strstr(client_extensions, extension); + + if (pos != NULL && (pos == extensionsString || pos[-1] == ' ') && + (pos[strlen(extension)] == ' ' || pos[strlen(extension)] == '\0')) + return 1; + + return 0; +} + +extern char *optarg; +extern int optind, opterr, optopt; +static char optstr[] = "v"; + +static void usage(char *name) +{ + printf("usage: %s\n", name); + exit(-1); +} + +int main(int argc, char *argv[]) +{ + Display *disp; + XVisualInfo *pvi; + XSetWindowAttributes swa; + int attrib[14]; + Window winGL; + GLXContext context; + int dummy; + Atom wmDelete; + int verbose = 0, width = 200, height = 200; + int c, i = 1; + int64_t ust, msc, sbc; + + opterr = 0; + while ((c = getopt(argc, argv, optstr)) != -1) { + switch (c) { + case 'v': + verbose = 1; + break; + default: + usage(argv[0]); + break; + } + } + + disp = XOpenDisplay(NULL); + if (!disp) { + fprintf(stderr, "failed to open display\n"); + return -1; + } + + if (!glXQueryExtension(disp, &dummy, &dummy)) { + fprintf(stderr, "glXQueryExtension failed\n"); + return -1; + } + + if (!GLXExtensionSupported(disp, "GLX_OML_sync_control")) { + fprintf(stderr, "GLX_OML_sync_control not supported, exiting\n"); + return -1; + } + + attrib[0] = GLX_RGBA; + attrib[1] = 1; + attrib[2] = GLX_RED_SIZE; + attrib[3] = 1; + attrib[4] = GLX_GREEN_SIZE; + attrib[5] = 1; + attrib[6] = GLX_BLUE_SIZE; + attrib[7] = 1; + attrib[8] = GLX_DOUBLEBUFFER; + attrib[9] = 1; + attrib[10] = None; + + pvi = glXChooseVisual(disp, DefaultScreen(disp), attrib); + if (!pvi) { + fprintf(stderr, "failed to choose visual, exiting\n"); + return -1; + } + + context = glXCreateContext(disp, pvi, None, GL_TRUE); + if (!context) { + fprintf(stderr, "failed to create glx context\n"); + return -1; + } + + pvi->screen = DefaultScreen(disp); + + swa.colormap = XCreateColormap(disp, RootWindow(disp, pvi->screen), + pvi->visual, AllocNone); + swa.border_pixel = 0; + swa.event_mask = ExposureMask | KeyPressMask | ButtonPressMask | + StructureNotifyMask; + winGL = XCreateWindow(disp, RootWindow(disp, pvi->screen), + 0, 0, + width, height, + 0, pvi->depth, InputOutput, pvi->visual, + CWBorderPixel | CWColormap | CWEventMask, &swa); + if (!winGL) { + fprintf(stderr, "window creation failed\n"); + return -1; + } + wmDelete = XInternAtom(disp, "WM_DELETE_WINDOW", True); + XSetWMProtocols(disp, winGL, &wmDelete, 1); + + XSetStandardProperties(disp, winGL, "msc test", "msc text", + None, NULL, 0, NULL); + + XMapRaised(disp, winGL); + + glXMakeCurrent(disp, winGL, context); + + get_sync_values = glXGetProcAddress((unsigned char *)"glXGetSyncValuesOML"); + wait_sync = glXGetProcAddress((unsigned char *)"glXWaitForMscOML"); + + if (!get_sync_values || !wait_sync) { + fprintf(stderr, "failed to get sync values function\n"); + return -1; + } + + while (i++) { + get_sync_values(disp, winGL, &ust, &msc, &sbc); + fprintf(stderr, "ust: %llu, msc: %llu, sbc: %llu\n", ust, msc, + sbc); + + /* Alternate colors to make tearing obvious */ + if (i & 1) + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + else + glClearColor(1.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + glXSwapBuffers(disp, winGL); + wait_sync(disp, winGL, 0, 60, 0, &ust, &msc, &sbc); + fprintf(stderr, + "wait returned ust: %llu, msc: %llu, sbc: %llu\n", + ust, msc, sbc); + sleep(1); + } + + XDestroyWindow(disp, winGL); + glXDestroyContext(disp, context); + XCloseDisplay(disp); + + return 0; +} diff --git a/progs/xdemos/offset.c b/progs/xdemos/offset.c index 6c5abf383b..314a4fcdd1 100644 --- a/progs/xdemos/offset.c +++ b/progs/xdemos/offset.c @@ -294,6 +294,7 @@ process_input(Display *dpy, Window win) { default: break; } + break; case ButtonPress: prevx = event.xbutton.x; prevy = event.xbutton.y; diff --git a/progs/xdemos/pbdemo.c b/progs/xdemos/pbdemo.c index 2573209336..277df72924 100644 --- a/progs/xdemos/pbdemo.c +++ b/progs/xdemos/pbdemo.c @@ -131,6 +131,7 @@ MakePbuffer( Display *dpy, int screen, int width, int height ) fbConfigs = ChooseFBConfig(dpy, screen, fbAttribs[attempt], &nConfigs); if (nConfigs==0 || !fbConfigs) { printf("Note: glXChooseFBConfig(%s) failed\n", fbString[attempt]); + XFree(fbConfigs); continue; } diff --git a/progs/xdemos/pbinfo.c b/progs/xdemos/pbinfo.c index b43adf1bb7..edfa9c1f3b 100644 --- a/progs/xdemos/pbinfo.c +++ b/progs/xdemos/pbinfo.c @@ -27,6 +27,7 @@ PrintConfigs(Display *dpy, int screen, Bool horizFormat) fbConfigs = GetAllFBConfigs(dpy, screen, &nConfigs); if (!nConfigs || !fbConfigs) { printf("Error: glxGetFBConfigs failed\n"); + XFree(fbConfigs); return; } diff --git a/progs/xdemos/sharedtex_mt.c b/progs/xdemos/sharedtex_mt.c index 07c1bfcc38..a90903adec 100644 --- a/progs/xdemos/sharedtex_mt.c +++ b/progs/xdemos/sharedtex_mt.c @@ -174,6 +174,10 @@ AddWindow(Display *dpy, const char *displayName, int xpos, int ypos, { static int id = 0; struct window *h = &Windows[NumWindows]; + if (strlen(displayName) + 1 > sizeof(h->DisplayName)) { + Error(displayName, "string overflow"); + return NULL; + } strcpy(h->DisplayName, displayName); h->Dpy = dpy; h->Win = win; @@ -447,7 +451,7 @@ main(int argc, char *argv[]) const char *dpyName = XDisplayName(NULL); pthread_t t0, t1, t2, t3; struct thread_init_arg tia0, tia1, tia2, tia3; - struct window *h0, *h1, *h2, *h3; + struct window *h0; XInitThreads(); @@ -462,9 +466,9 @@ main(int argc, char *argv[]) /* four windows and contexts sharing display lists and texture objects */ h0 = AddWindow(gDpy, dpyName, 10, 10, gCtx); - h1 = AddWindow(gDpy, dpyName, 330, 10, gCtx); - h2 = AddWindow(gDpy, dpyName, 10, 350, gCtx); - h3 = AddWindow(gDpy, dpyName, 330, 350, gCtx); + (void) AddWindow(gDpy, dpyName, 330, 10, gCtx); + (void) AddWindow(gDpy, dpyName, 10, 350, gCtx); + (void) AddWindow(gDpy, dpyName, 330, 350, gCtx); if (!glXMakeCurrent(gDpy, h0->Win, gCtx)) { Error(dpyName, "glXMakeCurrent failed for init thread."); |