From: <fa...@us...> - 2008-07-21 15:00:42
|
Revision: 742 http://freeglut.svn.sourceforge.net/freeglut/?rev=742&view=rev Author: fayjf Date: 2008-07-21 15:00:51 +0000 (Mon, 21 Jul 2008) Log Message: ----------- Implementing a patch from Jocelyn Frechot (thank you, Jocelyn) that "should enable the XInput extension management with the autotools." See e-mail of Sun 7/20/2008 12:01 PM. Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/src/Makefile.am Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2008-07-10 15:17:10 UTC (rev 741) +++ trunk/freeglut/freeglut/configure.ac 2008-07-21 15:00:51 UTC (rev 742) @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. -AC_INIT([freeglut library], [2.4.0], [fre...@li...], [freeglut]) +AC_INIT([freeglut library], [2.6.0], [fre...@li...], [freeglut]) AM_INIT_AUTOMAKE AC_PREREQ([2.56]) AC_CONFIG_SRCDIR([AUTHORS]) @@ -23,6 +23,7 @@ if test x"$no_x" = xyes; then GL_LIBS="-lopengl32 -lglu32 -lgdi32" LIBXXF86VM= + LIBXI= VERSION_INFO= EXPORT_FLAGS="-DFREEGLUT_EXPORTS" else @@ -30,11 +31,13 @@ AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode], [LIBXXF86VM=-lXxf86vm], [LIBXXF86VM=], [$X_LIBS -lXext -lX11]) + LIBXI=-lXi VERSION_INFO="-version-info 11:0:8" EXPORT_FLAGS= fi AC_SUBST([GL_LIBS]) AC_SUBST([LIBXXF86VM]) +AC_SUBST([LIBXI]) AC_SUBST([VERSION_INFO]) AC_SUBST([EXPORT_FLAGS]) @@ -45,6 +48,7 @@ AC_CHECK_HEADERS([GL/gl.h GL/glu.h GL/glx.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h]) AC_HEADER_TIME AC_CHECK_HEADERS([X11/extensions/xf86vmode.h], [], [], [#include <X11/Xlib.h>]) +AC_CHECK_HEADERS([X11/extensions/XI.h X11/extensions/XInput.h]) CPPFLAGS="$save_CPPFLAGS" # Checks for library functions. Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2008-07-10 15:17:10 UTC (rev 741) +++ trunk/freeglut/freeglut/src/Makefile.am 2008-07-21 15:00:51 UTC (rev 742) @@ -42,7 +42,7 @@ # # Additional linker flags # -lib@LIBRARY@_la_LIBADD = $(LIBM) $(X_LIBS) $(GL_LIBS) $(LIBXXF86VM) +lib@LIBRARY@_la_LIBADD = $(LIBM) $(X_LIBS) $(GL_LIBS) $(LIBXXF86VM) $(LIBXI) lib@LIBRARY@_la_LDFLAGS = $(VERSION_INFO) lib@LIBRARY@_la_CFLAGS = $(X_CFLAGS) $(EXPORT_FLAGS) lib@LIBRARY@_la_CPPFLAGS= -I$(top_srcdir)/include This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2008-11-02 22:22:08
|
Revision: 749 http://freeglut.svn.sourceforge.net/freeglut/?rev=749&view=rev Author: spanne Date: 2008-11-02 21:30:53 +0000 (Sun, 02 Nov 2008) Log Message: ----------- Added OpenGL 3.0 context creation API entries glutInitContextVersion, glutInitContextFlags and their related constants GLUT_INIT_MAJOR_VERSION GLUT_INIT_MINOR_VERSION GLUT_INIT_FLAGS GLUT_DEBUG GLUT_FORWARD_COMPATIBLE Note that this works with GLX only currently, the glutInitContext* API entries have no effect for WGL yet. TODO: Centralize the context creation code for WGL (the harder part) and use the new wglCreateContextAttribsARB API entry (the easy part, re-use most of the GLX code). Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_state.c trunk/freeglut/freeglut/src/freeglut_window.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2008-11-02 20:09:02 UTC (rev 748) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2008-11-02 21:30:53 UTC (rev 749) @@ -82,8 +82,20 @@ #define GLUT_AUX3 0x4000 #define GLUT_AUX4 0x8000 +/* + * Context-related flags, see freeglut_state.c + */ +#define GLUT_INIT_MAJOR_VERSION 0x0200 +#define GLUT_INIT_MINOR_VERSION 0x0201 +#define GLUT_INIT_FLAGS 0x0202 /* + * Flags for glutInitContextFlags, see freeglut_init.c + */ +#define GLUT_DEBUG 0x0001 +#define GLUT_FORWARD_COMPATIBLE 0x0002 + +/* * Process loop function, see freeglut_main.c */ FGAPI void FGAPIENTRY glutMainLoopEvent( void ); @@ -162,6 +174,12 @@ void glutJoystickGetMaxRange( int ident, float *axes ); void glutJoystickGetCenter( int ident, float *axes ); +/* + * Initialization functions, see freeglut_init.c + */ +FGAPI void FGAPIENTRY glutInitContextVersion( int majorVersion, int minorVersion ); +FGAPI void FGAPIENTRY glutInitContextFlags( int flags ); + #ifdef __cplusplus } #endif Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2008-11-02 20:09:02 UTC (rev 748) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2008-11-02 21:30:53 UTC (rev 749) @@ -85,7 +85,10 @@ GL_FALSE, /* JoysticksInitialised */ GL_FALSE, /* InputDevsInitialised */ 0, /* AuxiliaryBufferNumber */ - 0 /* SampleNumber */ + 0, /* SampleNumber */ + 1, /* MajorVersion */ + 0, /* MajorVersion */ + 0 /* ContextFlags */ }; @@ -418,6 +421,10 @@ fgState.JoysticksInitialised = GL_FALSE; fgState.InputDevsInitialised = GL_FALSE; + fgState.MajorVersion = 1; + fgState.MinorVersion = 0; + fgState.ContextFlags = 0; + fgState.Initialised = GL_FALSE; fgState.Position.X = -1; @@ -1076,4 +1083,20 @@ fgState.DisplayMode = glut_state_flag; } +/* -- SETTING OPENGL 3.0 CONTEXT CREATION PARAMETERS ---------------------- */ + +void FGAPIENTRY glutInitContextVersion( int majorVersion, int minorVersion ) +{ + /* We will make use of these valuse when creating a new OpenGL context... */ + fgState.MajorVersion = majorVersion; + fgState.MinorVersion = minorVersion; +} + + +void FGAPIENTRY glutInitContextFlags( int flags ) +{ + /* We will make use of this value when creating a new OpenGL context... */ + fgState.ContextFlags = flags; +} + /*** END OF FILE ***/ Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2008-11-02 20:09:02 UTC (rev 748) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2008-11-02 21:30:53 UTC (rev 749) @@ -303,6 +303,10 @@ int AuxiliaryBufferNumber; /* Number of auxiliary buffers */ int SampleNumber; /* Number of samples per pixel */ + + int MajorVersion; /* Major OpenGL context version */ + int MinorVersion; /* Minor OpenGL context version */ + int ContextFlags; /* OpenGL context flags */ }; /* The structure used by display initialization in freeglut_init.c */ Modified: trunk/freeglut/freeglut/src/freeglut_state.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_state.c 2008-11-02 20:09:02 UTC (rev 748) +++ trunk/freeglut/freeglut/src/freeglut_state.c 2008-11-02 21:30:53 UTC (rev 749) @@ -203,6 +203,9 @@ case GLUT_INIT_WINDOW_HEIGHT: return fgState.Size.Use ? fgState.Size.Y : -1 ; case GLUT_INIT_DISPLAY_MODE: return fgState.DisplayMode ; + case GLUT_INIT_MAJOR_VERSION: return fgState.MajorVersion ; + case GLUT_INIT_MINOR_VERSION: return fgState.MinorVersion ; + case GLUT_INIT_FLAGS: return fgState.ContextFlags ; #if TARGET_HOST_POSIX_X11 /* Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2008-11-02 20:09:02 UTC (rev 748) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2008-11-02 21:30:53 UTC (rev 749) @@ -485,17 +485,84 @@ #if TARGET_HOST_POSIX_X11 + +#ifndef GLX_CONTEXT_MAJOR_VERSION_ARB +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#endif + +#ifndef GLX_CONTEXT_MINOR_VERSION_ARB +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#endif + +#ifndef GLX_CONTEXT_FLAGS_ARB +#define GLX_CONTEXT_FLAGS_ARB 0x2094 +#endif + +#ifndef GLX_CONTEXT_DEBUG_BIT_ARB +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 +#endif + +#ifndef GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#endif + +typedef GLXContext (*CreateContextAttribsProc)(Display *dpy, GLXFBConfig config, + GLXContext share_list, Bool direct, + const int *attrib_list); + static GLXContext fghCreateNewContext( SFG_Window* window ) { + /* for color model calculation */ int menu = ( window->IsMenu && !fgStructure.MenuContext ); int index_mode = ( fgState.DisplayMode & GLUT_INDEX ); + + /* "classic" context creation */ Display *dpy = fgDisplay.Display; GLXFBConfig config = *(window->Window.FBConfig); int render_type = ( !menu && index_mode ) ? GLX_COLOR_INDEX_TYPE : GLX_RGBA_TYPE; GLXContext share_list = NULL; Bool direct = ( fgState.DirectContext != GLUT_FORCE_INDIRECT_CONTEXT ); + GLXContext context; - return glXCreateNewContext( dpy, config, render_type, share_list, direct ); + /* new context creation */ + int attribs[7]; + CreateContextAttribsProc createContextAttribs; + + /* If nothing fancy has been required, simply use the old context creation GLX API entry */ + if ( fgState.MajorVersion == 1 && fgState.MinorVersion == 0 && fgState.ContextFlags == 0) + { + context = glXCreateNewContext( dpy, config, render_type, share_list, direct ); + if ( context == NULL ) { + fgError( "could not create new OpenGL context" ); + } + return context; + } + + /* color index mode is not available anymore with OpenGL 3.0 */ + if ( render_type == GLX_COLOR_INDEX_TYPE ) { + fgWarning( "color index mode is deprecated, using RGBA mode" ); + } + + attribs[0] = GLX_CONTEXT_MAJOR_VERSION_ARB; + attribs[1] = fgState.MajorVersion; + attribs[2] = GLX_CONTEXT_MINOR_VERSION_ARB; + attribs[3] = fgState.MinorVersion; + attribs[4] = GLX_CONTEXT_FLAGS_ARB; + attribs[5] = ((fgState.ContextFlags & GLUT_DEBUG) ? GLX_CONTEXT_DEBUG_BIT_ARB : 0) | + ((fgState.ContextFlags & GLUT_FORWARD_COMPATIBLE) ? GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB : 0); + attribs[6] = 0; + + createContextAttribs = (CreateContextAttribsProc) fghGetProcAddress( "glXCreateContextAttribsARB" ); + if ( createContextAttribs == NULL ) { + fgError( "glXCreateContextAttribsARB not found" ); + } + + context = createContextAttribs( dpy, config, share_list, direct, attribs ); + if ( context == NULL ) { + fgError( "could not create new OpenGL %d.%d context (flags %x)", + fgState.MajorVersion, fgState.MinorVersion, fgState.ContextFlags ); + } + return context; } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-02-03 21:08:15
|
Revision: 764 http://freeglut.svn.sourceforge.net/freeglut/?rev=764&view=rev Author: fayjf Date: 2009-02-03 21:08:11 +0000 (Tue, 03 Feb 2009) Log Message: ----------- Removing some errant tabs, fixing ticket #2137721, and adding special-key capability to recognizing the NumLock, Delete, and keypad '5' keys Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/freeglut_main.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2009-02-03 14:31:36 UTC (rev 763) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2009-02-03 21:08:11 UTC (rev 764) @@ -33,6 +33,13 @@ #endif /* + * Additional GLUT Key definitions for the Special key function + */ +#define GLUT_KEY_NUM_LOCK 0x006D +#define GLUT_KEY_BEGIN 0x006E +#define GLUT_KEY_DELETE 0x006F + +/* * GLUT API Extension macro definitions -- behaviour when the user clicks on an "x" to close a window */ #define GLUT_ACTION_EXIT 0 Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2009-02-03 14:31:36 UTC (rev 763) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2009-02-03 21:08:11 UTC (rev 764) @@ -1159,15 +1159,15 @@ * XXX track ButtonPress/ButtonRelease events in our own * XXX bit-mask? */ - fgState.Modifiers = fghGetXModifiers( event.xmotion.state ); + fgState.Modifiers = fghGetXModifiers( event.xmotion.state ); if ( event.xmotion.state & ( Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask ) ) { INVOKE_WCB( *window, Motion, ( event.xmotion.x, event.xmotion.y ) ); } else { INVOKE_WCB( *window, Passive, ( event.xmotion.x, event.xmotion.y ) ); - } - fgState.Modifiers = INVALID_MODIFIERS; + } + fgState.Modifiers = INVALID_MODIFIERS; } break; @@ -1356,9 +1356,13 @@ case XK_F11: special = GLUT_KEY_F11; break; case XK_F12: special = GLUT_KEY_F12; break; + case XK_KP_Left: case XK_Left: special = GLUT_KEY_LEFT; break; + case XK_KP_Right: case XK_Right: special = GLUT_KEY_RIGHT; break; + case XK_KP_Up: case XK_Up: special = GLUT_KEY_UP; break; + case XK_KP_Down: case XK_Down: special = GLUT_KEY_DOWN; break; case XK_KP_Prior: @@ -1371,6 +1375,10 @@ case XK_End: special = GLUT_KEY_END; break; case XK_KP_Insert: case XK_Insert: special = GLUT_KEY_INSERT; break; + + case XK_Num_Lock : special = GLUT_KEY_NUM_LOCK; break; + case XK_KP_Begin : special = GLUT_KEY_BEGIN; break; + case XK_KP_Delete: special = GLUT_KEY_DELETE; break; } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-02-13 17:45:50
|
Revision: 768 http://freeglut.svn.sourceforge.net/freeglut/?rev=768&view=rev Author: spanne Date: 2009-02-13 17:45:46 +0000 (Fri, 13 Feb 2009) Log Message: ----------- Avoid CR\LF vs. LF troubles when using TortoiseSVN plus Cygwin. Modified Paths: -------------- trunk/freeglut/freeglut/autogen.sh trunk/freeglut/freeglut/configure.ac Modified: trunk/freeglut/freeglut/autogen.sh =================================================================== --- trunk/freeglut/freeglut/autogen.sh 2009-02-13 17:44:22 UTC (rev 767) +++ trunk/freeglut/freeglut/autogen.sh 2009-02-13 17:45:46 UTC (rev 768) @@ -1,2 +1,2 @@ #! /bin/sh -autoreconf --install --force --warnings=all +autoreconf --install --force --warnings=all # Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2009-02-13 17:44:22 UTC (rev 767) +++ trunk/freeglut/freeglut/configure.ac 2009-02-13 17:45:46 UTC (rev 768) @@ -95,17 +95,5 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile - doc/Makefile - include/GL/Makefile - include/Makefile - progs/Makefile - progs/demos/CallbackMaker/Makefile - progs/demos/Fractals/Makefile - progs/demos/Fractals_random/Makefile - progs/demos/Lorenz/Makefile - progs/demos/Makefile - progs/demos/One/Makefile - progs/demos/shapes/Makefile - src/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile src/Makefile]) AC_OUTPUT This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-02-14 20:38:58
|
Revision: 774 http://freeglut.svn.sourceforge.net/freeglut/?rev=774&view=rev Author: spanne Date: 2009-02-14 20:38:53 +0000 (Sat, 14 Feb 2009) Log Message: ----------- Initial version of a fully OpenGL-3.0-compliant of the famous smooth.c from the Red Book. What has been done already: * Explicitly request a forward-compatible 3.0 context * Report GL errors, if any, at a few crucial places * Replaced gluOrtho2D with a home-grown matrix + glLoadMatrixf What remains to be done: * Use vertex shaders and fragment shaders * Use vertex buffer objects Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/progs/demos/Makefile.am Added Paths: ----------- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.dsp trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3Static.dsp Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2009-02-13 18:32:26 UTC (rev 773) +++ trunk/freeglut/freeglut/configure.ac 2009-02-14 20:38:53 UTC (rev 774) @@ -95,5 +95,5 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile src/Makefile]) AC_OUTPUT Modified: trunk/freeglut/freeglut/progs/demos/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Makefile.am 2009-02-13 18:32:26 UTC (rev 773) +++ trunk/freeglut/freeglut/progs/demos/Makefile.am 2009-02-14 20:38:53 UTC (rev 774) @@ -1,2 +1,2 @@ EXTRA_DIST = demos.dsw -SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes +SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 Property changes on: trunk/freeglut/freeglut/progs/demos/smooth_opengl3 ___________________________________________________________________ Added: svn:ignore + .deps Makefile.in Makefile smooth_opengl3 smooth_opengl3.exe Added: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am (rev 0) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am 2009-02-14 20:38:53 UTC (rev 774) @@ -0,0 +1,5 @@ +EXTRA_DIST = smooth_opengl3.c smooth_opengl3.dsp +noinst_PROGRAMS = smooth_opengl3 +smooth_opengl3_SOURCES = smooth_opengl3.c +smooth_opengl3_LDFLAGS = -export-dynamic ../../../src/lib@LIBRARY@.la +smooth_opengl3_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Added: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c (rev 0) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c 2009-02-14 20:38:53 UTC (rev 774) @@ -0,0 +1,157 @@ +/* + * smooth_opengl3.c, based on smooth.c, which is (c) by SGI, see below. + * This program demonstrates smooth shading in a way which is fully + * OpenGL-3.0-compliant. + * A smooth shaded polygon is drawn in a 2-D projection. + */ + +/* + * Original copyright notice from smooth.c: + * + * License Applicability. Except to the extent portions of this file are + * made subject to an alternative license as permitted in the SGI Free + * Software License B, Version 1.1 (the "License"), the contents of this + * file are subject only to the provisions of the License. You may not use + * this file except in compliance with the License. You may obtain a copy + * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 + * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: + * + * http://oss.sgi.com/projects/FreeB + * + * Note that, as provided in the License, the Software is distributed on an + * "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS + * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND + * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A + * PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * + * Original Code. The Original Code is: OpenGL Sample Implementation, + * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, + * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. + * Copyright in any portions created by third parties is as indicated + * elsewhere herein. All Rights Reserved. + * + * Additional Notice Provisions: The application programming interfaces + * established by SGI in conjunction with the Original Code are The + * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released + * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version + * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X + * Window System(R) (Version 1.3), released October 19, 1998. This software + * was created using the OpenGL(R) version 1.2.1 Sample Implementation + * published by SGI, but has not been independently verified as being + * compliant with the OpenGL(R) version 1.2.1 Specification. + * + */ + +#include <GL/freeglut.h> +#include <stdlib.h> +#include <stdio.h> + +void reportErrors(const char *message) +{ + GLenum error; + while (( error = glGetError() ) != GL_NO_ERROR) { + fprintf (stderr, "GL error 0x%X %s\n", error, message); + } +} + +void init(void) +{ + reportErrors ("at start of init"); + glClearColor (0.0, 0.0, 0.0, 0.0); + glShadeModel (GL_SMOOTH); + reportErrors ("at end of init"); +} + +void triangle(void) +{ + reportErrors ("at start of triangle"); + glBegin (GL_TRIANGLES); + glColor3f (1.0, 0.0, 0.0); + glVertex2f (5.0, 5.0); + glColor3f (0.0, 1.0, 0.0); + glVertex2f (25.0, 5.0); + glColor3f (0.0, 0.0, 1.0); + glVertex2f (5.0, 25.0); + glEnd(); + reportErrors ("at end of triangle"); +} + +void display(void) +{ + reportErrors ("at start of display"); + glClear (GL_COLOR_BUFFER_BIT); + triangle (); + glFlush (); + reportErrors ("at end of display"); +} + +void loadOrthof(GLfloat *m, GLfloat l, GLfloat r, GLfloat b, GLfloat t, + GLfloat n, GLfloat f) +{ + m[ 0] = 2.0f / (r - l); + m[ 1] = 0.0f; + m[ 2] = 0.0f; + m[ 3] = 0.0f; + + m[ 4] = 0.0f; + m[ 5] = 2.0f / (t - b); + m[ 6] = 0.0f; + m[ 7] = 0.0f; + + m[ 8] = 0.0f; + m[ 9] = 0.0f; + m[10] = -2.0f / (f - n); + m[11] = 0.0f; + + m[12] = -(r + l) / (r - l); + m[13] = -(t + b) / (t - b); + m[14] = -(f + n) / (f - n); + m[15] = 1.0f; +} + +void loadOrtho2Df(GLfloat *m, GLfloat l, GLfloat r, GLfloat b, GLfloat t) +{ + loadOrthof (m, l, r, b, t, -1.0f, 1.0f); +} + +void reshape (int w, int h) +{ + GLfloat m[16]; + reportErrors ("at start of reshape"); + glViewport (0, 0, (GLsizei) w, (GLsizei) h); + glMatrixMode (GL_PROJECTION); + if (w <= h) { + loadOrtho2Df (m, 0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w); + } else { + loadOrtho2Df (m, 0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0); + } + glLoadMatrixf (m); + glMatrixMode (GL_MODELVIEW); + reportErrors ("at end of reshape"); +} + +void keyboard(unsigned char key, int x, int y) +{ + switch (key) { + case 27: + exit(0); + break; + } +} + +int main(int argc, char** argv) +{ + glutInit(&argc, argv); + glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); + glutInitContextVersion(3, 0); + // glutInitContextFlags(GLUT_FORWARD_COMPATIBLE | GLUT_DEBUG); + glutInitWindowSize (500, 500); + glutInitWindowPosition (100, 100); + glutCreateWindow (argv[0]); + init (); + glutDisplayFunc(display); + glutReshapeFunc(reshape); + glutKeyboardFunc (keyboard); + glutMainLoop(); + return 0; +} Property changes on: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c ___________________________________________________________________ Added: svn:executable + * Added: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.dsp =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.dsp (rev 0) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.dsp 2009-02-14 20:38:53 UTC (rev 774) @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="smooth_opengl3" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=smooth_opengl3 - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "smooth_opengl3.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "smooth_opengl3.mak" CFG="smooth_opengl3 - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "smooth_opengl3 - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "smooth_opengl3 - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "smooth_opengl3 - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../Release" + +!ELSEIF "$(CFG)" == "smooth_opengl3 - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../Debug" + +!ENDIF + +# Begin Target + +# Name "smooth_opengl3 - Win32 Release" +# Name "smooth_opengl3 - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\smooth_opengl3.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project Added: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3Static.dsp =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3Static.dsp (rev 0) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3Static.dsp 2009-02-14 20:38:53 UTC (rev 774) @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="smooth_opengl3Static" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=smooth_opengl3Static - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "smooth_opengl3Static.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "smooth_opengl3Static.mak" CFG="smooth_opengl3Static - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "smooth_opengl3Static - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "smooth_opengl3Static - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "smooth_opengl3Static - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "smooth_opengl3Static___Win32_Release" +# PROP BASE Intermediate_Dir "smooth_opengl3Static___Win32_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseStatic" +# PROP Intermediate_Dir "ReleaseStatic" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FREEGLUT_STATIC" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../ReleaseStatic" + +!ELSEIF "$(CFG)" == "smooth_opengl3Static - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "smooth_opengl3Static___Win32_Debug" +# PROP BASE Intermediate_Dir "smooth_opengl3Static___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugStatic" +# PROP Intermediate_Dir "DebugStatic" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "FREEGLUT_STATIC" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../DebugStatic" + +!ENDIF + +# Begin Target + +# Name "smooth_opengl3Static - Win32 Release" +# Name "smooth_opengl3Static - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\smooth_opengl3.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project Property changes on: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3Static.dsp ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-03-16 16:45:16
|
Revision: 799 http://freeglut.svn.sourceforge.net/freeglut/?rev=799&view=rev Author: spanne Date: 2009-03-16 16:44:36 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Added missing API entries. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-03-15 18:12:28 UTC (rev 798) +++ trunk/freeglut/freeglut/ChangeLog 2009-03-16 16:44:36 UTC (rev 799) @@ -1,3 +1,7 @@ +2009-03-16 Sven Panne <sve...@ae...> + + * src/freeglutdll.def: Added missing API entries. + 2009-03-10 John F. Fay <joh...@eg...> * progs/demos/demos.dsw: Adding the "smooth_opengl3" demo Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2009-03-15 18:12:28 UTC (rev 798) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2009-03-16 16:44:36 UTC (rev 799) @@ -1,6 +1,6 @@ LIBRARY freeglutdll DESCRIPTION "Freeglut OpenGL Utility Toolkit" -VERSION 2.4.0 +VERSION 2.6.0 EXPORTS glutInit glutInitWindowPosition @@ -151,3 +151,8 @@ glutJoystickGetMinRange glutJoystickGetMaxRange glutJoystickGetCenter + glutExit + glutFullScreenToggle + glutGetModeValues + glutInitContextFlags + glutInitContextVersion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-03-16 17:31:15
|
Revision: 801 http://freeglut.svn.sourceforge.net/freeglut/?rev=801&view=rev Author: spanne Date: 2009-03-16 17:30:37 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Added GLUT_AUX and GLUT_MULTISAMPLE as possible parameters for glutGet, making things more symmetric with glutSetOption. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/NEWS trunk/freeglut/freeglut/src/freeglut_state.c Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-03-16 17:28:25 UTC (rev 800) +++ trunk/freeglut/freeglut/ChangeLog 2009-03-16 17:30:37 UTC (rev 801) @@ -1,5 +1,8 @@ 2009-03-16 Sven Panne <sve...@ae...> + * src/freeglut_state.c: Added GLUT_AUX and GLUT_MULTISAMPLE as possible + parameters for glutGet, making things more symmetric with + glutSetOption. * src/freeglutdll.def: Added missing API entries. 2009-03-10 John F. Fay <joh...@eg...> Modified: trunk/freeglut/freeglut/NEWS =================================================================== --- trunk/freeglut/freeglut/NEWS 2009-03-16 17:28:25 UTC (rev 800) +++ trunk/freeglut/freeglut/NEWS 2009-03-16 17:30:37 UTC (rev 801) @@ -37,7 +37,7 @@ * Added new API entry to de-initialize freeglut: - glutExit( void ); + void glutExit( void ); * Added more special keys: GLUT_KEY_NUM_LOCK, GLUT_KEY_BEGIN GLUT_KEY_DELETE @@ -45,9 +45,11 @@ constants GLUT_CAPTIONLESS and GLUT_BORDERLESS for glutInitDisplayMode (currently works for Windows only). - * Added support for multisampling: glutSetOption() accepts GLUT_MULTISAMPLE - now. The possible number of samples per pixels can be queried via the new - API entry + * Added support for multisampling: The number of samples per pixel to use + when GLUT_MULTISAMPLE is specified in glutInitDisplayMode() can be set via + glutSetOption() with parameter GLUT_MULTISAMPLE now. glutGetOption() with + the same token retrieves that value. The possible number of samples per + pixels can be queried via the new API entry int *glutGetModeValues( GLenum mode, int *size ); Modified: trunk/freeglut/freeglut/src/freeglut_state.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_state.c 2009-03-16 17:28:25 UTC (rev 800) +++ trunk/freeglut/freeglut/src/freeglut_state.c 2009-03-16 17:30:37 UTC (rev 801) @@ -537,12 +537,16 @@ case GLUT_DIRECT_RENDERING: return fgState.DirectContext; - break; case GLUT_FULL_SCREEN: return fghCheckFullScreen(); - break; + case GLUT_AUX: + return fgState.AuxiliaryBufferNumber; + + case GLUT_MULTISAMPLE: + return fgState.SampleNumber; + default: fgWarning( "glutGet(): missing enum handle %d", eWhat ); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-03-16 17:54:39
|
Revision: 802 http://freeglut.svn.sourceforge.net/freeglut/?rev=802&view=rev Author: spanne Date: 2009-03-16 17:53:54 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Set the default number of samples per pixel to 4 and actually use the value set with glutSetOption(GLUT_MULTISAMPLE,...) in Windows code. Previously the Windows code used a hardwired value of 4 and the GLX code had a default of 0, neither made much sense. Similarly, set the default number of auxiliary buffers to 1 and use that value when GLUT_AUX is used. Note: There latter token has the same value as GLUT_AUX1, and for historical reasons we seem to have 2 APIs to set the number of auxiliary buffers: Explicitly using GLUT_AUX1 ... GLUT_AUX4, and using a combination of GLUT_AUX with glutSetOption. The default of 1 ensures consistent behaviour in both cases. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_window.c Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-03-16 17:30:37 UTC (rev 801) +++ trunk/freeglut/freeglut/ChangeLog 2009-03-16 17:53:54 UTC (rev 802) @@ -1,5 +1,16 @@ 2009-03-16 Sven Panne <sve...@ae...> + * src/freeglut_init.c,src/freeglut_window.c: Set the default number of + samples per pixel to 4 and actually use the value set with + glutSetOption(GLUT_MULTISAMPLE,...) in Windows code. Previously the + Windows code used a hardwired value of 4 and the GLX code had a + default of 0, neither made much sense. Similarly, set the default + number of auxiliary buffers to 1 and use that value when GLUT_AUX is + used. Note: There latter token has the same value as GLUT_AUX1, and + for historical reasons we seem to have 2 APIs to set the number of + auxiliary buffers: Explicitly using GLUT_AUX1 ... GLUT_AUX4, and using + a combination of GLUT_AUX with glutSetOption. The default of 1 ensures + consistent behaviour in both cases. * src/freeglut_state.c: Added GLUT_AUX and GLUT_MULTISAMPLE as possible parameters for glutGet, making things more symmetric with glutSetOption. Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2009-03-16 17:30:37 UTC (rev 801) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2009-03-16 17:53:54 UTC (rev 802) @@ -84,8 +84,8 @@ NULL, /* ProgramName */ GL_FALSE, /* JoysticksInitialised */ GL_FALSE, /* InputDevsInitialised */ - 0, /* AuxiliaryBufferNumber */ - 0, /* SampleNumber */ + 1, /* AuxiliaryBufferNumber */ + 4, /* SampleNumber */ 1, /* MajorVersion */ 0, /* MajorVersion */ 0 /* ContextFlags */ Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2009-03-16 17:30:37 UTC (rev 801) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2009-03-16 17:53:54 UTC (rev 802) @@ -132,14 +132,22 @@ ATTRIB_VAL( GLX_ACCUM_ALPHA_SIZE, 1 ); } - if ((fgState.DisplayMode & GLUT_AUX) - || (fgState.DisplayMode & GLUT_AUX1) - || (fgState.DisplayMode & GLUT_AUX2) - || (fgState.DisplayMode & GLUT_AUX3) - || (fgState.DisplayMode & GLUT_AUX4)) - { - ATTRIB_VAL(GLX_AUX_BUFFERS, fgState.AuxiliaryBufferNumber) - } + if( fgState.DisplayMode & GLUT_AUX4 ) + { + ATTRIB_VAL(GLX_AUX_BUFFERS, 4); + } + else if( fgState.DisplayMode & GLUT_AUX3 ) + { + ATTRIB_VAL(GLX_AUX_BUFFERS, 3); + } + else if( fgState.DisplayMode & GLUT_AUX2 ) + { + ATTRIB_VAL(GLX_AUX_BUFFERS, 2); + } + else if( fgState.DisplayMode & GLUT_AUX1 ) /* NOTE: Same as GLUT_AUX! */ + { + ATTRIB_VAL(GLX_AUX_BUFFERS, fgState.AuxiliaryBufferNumber); + } if (fgState.DisplayMode & GLUT_MULTISAMPLE) { @@ -427,8 +435,8 @@ pfd.cAuxBuffers = 3; else if( fgState.DisplayMode & GLUT_AUX2 ) pfd.cAuxBuffers = 2; - else if( fgState.DisplayMode & GLUT_AUX1 ) - pfd.cAuxBuffers = 1; + else if( fgState.DisplayMode & GLUT_AUX1 ) /* NOTE: Same as GLUT_AUX! */ + pfd.cAuxBuffers = fgState.AuxiliaryBufferNumber; else pfd.cAuxBuffers = 0; @@ -497,7 +505,7 @@ pAttributes[iCounter++]=WGL_DOUBLE_BUFFER_ARB; pAttributes[iCounter++]=(fgState.DisplayMode & GLUT_DOUBLE)!=0; pAttributes[iCounter++]=WGL_SAMPLE_BUFFERS_ARB; pAttributes[iCounter++]=GL_TRUE; - pAttributes[iCounter++]=WGL_SAMPLES_ARB; pAttributes[iCounter++]=4; + pAttributes[iCounter++]=WGL_SAMPLES_ARB; pAttributes[iCounter++]=fgState.SampleNumber; pAttributes[iCounter++]=0; pAttributes[iCounter++]=0; /* terminator */ bValid = wglChoosePixelFormatARBProc(window->Window.Device,pAttributes,fAttributes,1,&iPixelFormat,&numFormats); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-03-27 16:21:04
|
Revision: 808 http://freeglut.svn.sourceforge.net/freeglut/?rev=808&view=rev Author: spanne Date: 2009-03-27 16:20:40 +0000 (Fri, 27 Mar 2009) Log Message: ----------- Make Visual C happy by including stddef.h and explicitly marking some literals as float. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-03-26 16:19:26 UTC (rev 807) +++ trunk/freeglut/freeglut/ChangeLog 2009-03-27 16:20:40 UTC (rev 808) @@ -1,3 +1,8 @@ +2009-03-27 Sven Panne <sve...@ae...> + + * progs/demos/smooth_opengl3/smooth_opengl3.c: Make Visual C happy by + including stddef.h and explicitly marking some literals as float. + 2009-03-26 Sven Panne <sve...@ae...> * src/freeglut_init.c,src/freeglut_input_devices.c: Unbreak the build: Modified: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c 2009-03-26 16:19:26 UTC (rev 807) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c 2009-03-27 16:20:40 UTC (rev 808) @@ -45,6 +45,7 @@ #include <GL/freeglut.h> #include <stdlib.h> #include <stdio.h> +#include <stddef.h> #include <string.h> /* report GL errors, if any, to stderr */ @@ -397,9 +398,9 @@ { glViewport (0, 0, (GLsizei) w, (GLsizei) h); if (w <= h) { - loadOrtho2Df (projectionMatrix, 0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w); + loadOrtho2Df (projectionMatrix, 0.0f, 30.0f, 0.0f, 30.0f * (GLfloat) h/(GLfloat) w); } else { - loadOrtho2Df (projectionMatrix, 0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0); + loadOrtho2Df (projectionMatrix, 0.0f, 30.0f * (GLfloat) w/(GLfloat) h, 0.0f, 30.0f); } checkError ("reshape"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-03-30 16:15:09
|
Revision: 809 http://freeglut.svn.sourceforge.net/freeglut/?rev=809&view=rev Author: spanne Date: 2009-03-30 16:14:49 +0000 (Mon, 30 Mar 2009) Log Message: ----------- Make the example fully OpenGL-3.1-compliant. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-03-27 16:20:40 UTC (rev 808) +++ trunk/freeglut/freeglut/ChangeLog 2009-03-30 16:14:49 UTC (rev 809) @@ -1,3 +1,8 @@ +2009-03-30 Sven Panne <sve...@ae...> + + * progs/demos/smooth_opengl3/smooth_opengl3.c: Make the example fully + OpenGL-3.1-compliant. + 2009-03-27 Sven Panne <sve...@ae...> * progs/demos/smooth_opengl3/smooth_opengl3.c: Make Visual C happy by Modified: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c 2009-03-27 16:20:40 UTC (rev 808) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/smooth_opengl3.c 2009-03-30 16:14:49 UTC (rev 809) @@ -1,7 +1,7 @@ /* * smooth_opengl3.c, based on smooth.c, which is (c) by SGI, see below. * This program demonstrates smooth shading in a way which is fully - * OpenGL-3.0-compliant. + * OpenGL-3.1-compliant. * A smooth shaded polygon is drawn in a 2-D projection. */ @@ -211,23 +211,25 @@ } const ourGLchar *vertexShaderSource[] = { - "#version 130\n", + "#version 140\n", "uniform mat4 fg_ProjectionMatrix;\n", "in vec4 fg_Color;\n", "in vec4 fg_Vertex;\n", - "void main(void)\n", + "smooth out vec4 fg_SmoothColor;\n", + "void main()\n", "{\n", - " gl_FrontColor = fg_Color;\n", + " fg_SmoothColor = fg_Color;\n", " gl_Position = fg_ProjectionMatrix * fg_Vertex;\n", "}\n" }; const ourGLchar *fragmentShaderSource[] = { - "#version 130\n", + "#version 140\n", + "smooth in vec4 fg_SmoothColor;\n", "out vec4 fg_FragColor;\n", "void main(void)\n", "{\n", - " fg_FragColor = gl_Color;\n", + " fg_FragColor = fg_SmoothColor;\n", "}\n" }; @@ -316,7 +318,6 @@ void initRendering(void) { glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); checkError ("initRendering"); } @@ -418,9 +419,9 @@ { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - /* add command line argument "classic" for a pre-3.0 context */ + /* add command line argument "classic" for a pre-3.x context */ if ((argc != 2) || (strcmp (argv[1], "classic") != 0)) { - glutInitContextVersion (3, 0); + glutInitContextVersion (3, 1); glutInitContextFlags (GLUT_FORWARD_COMPATIBLE | GLUT_DEBUG); } glutInitWindowSize (500, 500); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-04-05 12:47:41
|
Revision: 811 http://freeglut.svn.sourceforge.net/freeglut/?rev=811&view=rev Author: spanne Date: 2009-04-05 12:47:32 +0000 (Sun, 05 Apr 2009) Log Message: ----------- Removed remnants of CVS. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog Removed Paths: ------------- trunk/freeglut/freeglut/.cvsignore trunk/freeglut/freeglut/doc/.cvsignore trunk/freeglut/freeglut/include/.cvsignore trunk/freeglut/freeglut/include/GL/.cvsignore trunk/freeglut/freeglut/progs/.cvsignore trunk/freeglut/freeglut/progs/demos/.cvsignore trunk/freeglut/freeglut/progs/demos/CallbackMaker/.cvsignore trunk/freeglut/freeglut/progs/demos/Fractals/.cvsignore trunk/freeglut/freeglut/progs/demos/Fractals_random/.cvsignore trunk/freeglut/freeglut/progs/demos/Lorenz/.cvsignore trunk/freeglut/freeglut/progs/demos/One/.cvsignore trunk/freeglut/freeglut/progs/demos/shapes/.cvsignore trunk/freeglut/freeglut/src/.cvsignore Deleted: trunk/freeglut/freeglut/.cvsignore =================================================================== --- trunk/freeglut/freeglut/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,25 +0,0 @@ -INSTALL -Makefile -Makefile.in -aclocal.m4 -autom4te.cache -autoscan.log -compile -config.guess -config.h -config.h.in -config.log -config.status -config.sub -configure -configure.scan -debugfiles.list -debugsources.list -depcomp -freeglut-*.tar.gz -install-sh -libtool -ltmain.sh -man-pages -missing -stamp-h1 Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/ChangeLog 2009-04-05 12:47:32 UTC (rev 811) @@ -1,3 +1,12 @@ +2009-04-05 Sven Panne <sve...@ae...> + + * .cvsignore,doc/.cvsignore,include/.cvsignore,include/GL/.cvsignore, + progs/.cvsignore,progs/demos/.cvsignore, + progs/demos/CallbackMaker/.cvsignore,progs/demos/Fractals/.cvsignore, + progs/demos/Fractals_random/.cvsignore,progs/demos/Lorenz/.cvsignore, + progs/demos/One/.cvsignore,progs/demos/shapes/.cvsignore, + src/.cvsignore: Removed remnants of CVS. + 2009-03-30 Sven Panne <sve...@ae...> * progs/demos/smooth_opengl3/smooth_opengl3.c: Make the example fully Deleted: trunk/freeglut/freeglut/doc/.cvsignore =================================================================== --- trunk/freeglut/freeglut/doc/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/doc/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: trunk/freeglut/freeglut/include/.cvsignore =================================================================== --- trunk/freeglut/freeglut/include/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/include/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: trunk/freeglut/freeglut/include/GL/.cvsignore =================================================================== --- trunk/freeglut/freeglut/include/GL/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/include/GL/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: trunk/freeglut/freeglut/progs/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: trunk/freeglut/freeglut/progs/demos/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: trunk/freeglut/freeglut/progs/demos/CallbackMaker/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/CallbackMaker/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/CallbackMaker/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,5 +0,0 @@ -.deps -.libs -CallbackMaker -Makefile -Makefile.in Deleted: trunk/freeglut/freeglut/progs/demos/Fractals/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/Fractals/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/Fractals/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -fractals Deleted: trunk/freeglut/freeglut/progs/demos/Fractals_random/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/Fractals_random/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/Fractals_random/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -fractals_random Deleted: trunk/freeglut/freeglut/progs/demos/Lorenz/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/Lorenz/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/Lorenz/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -lorenz Deleted: trunk/freeglut/freeglut/progs/demos/One/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/One/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -one Deleted: trunk/freeglut/freeglut/progs/demos/shapes/.cvsignore =================================================================== --- trunk/freeglut/freeglut/progs/demos/shapes/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/progs/demos/shapes/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -shapes Deleted: trunk/freeglut/freeglut/src/.cvsignore =================================================================== --- trunk/freeglut/freeglut/src/.cvsignore 2009-04-05 10:50:13 UTC (rev 810) +++ trunk/freeglut/freeglut/src/.cvsignore 2009-04-05 12:47:32 UTC (rev 811) @@ -1,6 +0,0 @@ -*.la -*.lo -.deps -.libs -Makefile -Makefile.in This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-04-05 13:13:47
|
Revision: 812 http://freeglut.svn.sourceforge.net/freeglut/?rev=812&view=rev Author: spanne Date: 2009-04-05 13:13:31 +0000 (Sun, 05 Apr 2009) Log Message: ----------- Added more project/workspace/... files to distribution. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/Makefile.am Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-04-05 12:47:32 UTC (rev 811) +++ trunk/freeglut/freeglut/ChangeLog 2009-04-05 13:13:31 UTC (rev 812) @@ -1,5 +1,6 @@ 2009-04-05 Sven Panne <sve...@ae...> + * Makefile.am: Added more project/workspace/... files to distribution. * .cvsignore,doc/.cvsignore,include/.cvsignore,include/GL/.cvsignore, progs/.cvsignore,progs/demos/.cvsignore, progs/demos/CallbackMaker/.cvsignore,progs/demos/Fractals/.cvsignore, Modified: trunk/freeglut/freeglut/Makefile.am =================================================================== --- trunk/freeglut/freeglut/Makefile.am 2009-04-05 12:47:32 UTC (rev 811) +++ trunk/freeglut/freeglut/Makefile.am 2009-04-05 13:13:31 UTC (rev 812) @@ -4,12 +4,52 @@ AUTOMAKE_OPTIONS = gnu EXTRA_DIST = \ - README.win32 LISEZ_MOI \ - freeglut.lsm autogen.sh \ - freeglut.kdevprj freeglut.kdevelop \ - freeglut.dsp freeglut.dsw \ + FrequentlyAskedQuestions \ + LISEZ_MOI \ + README.win32 \ + autogen.sh \ + freeglut.dep \ + freeglut.dsp \ + freeglut.dsw \ + freeglut.kdevelop \ + freeglut.kdevprj \ + freeglut.lsm \ + freeglut.mak \ + freeglut.rc \ + freeglut.spec \ + freeglut.tgt \ + freeglut.wpj \ + freeglut_evc4.vcp \ + freeglut_evc4.vcw \ + freeglut_static.dep \ freeglut_static.dsp \ - freeglut_evc4.vcp freeglut_evc4.vcw + freeglut_static.mak \ + freeglut_static.tgt \ + freeglut_static_vs2008.vcproj \ + freeglut_vs2008.sln \ + freeglut_vs2008.vcproj \ + progs/demos/CallbackMaker/CallbackMakerStatic.dsp \ + progs/demos/CallbackMaker/CallbackMakerStatic_vs2008.vcproj \ + progs/demos/CallbackMaker/CallbackMaker_vs2008.vcproj \ + progs/demos/Fractals/FractalsStatic.dsp \ + progs/demos/Fractals/FractalsStatic_vs2008.vcproj \ + progs/demos/Fractals/Fractals_vs2008.vcproj \ + progs/demos/Fractals_random/Fractals_randomStatic.dsp \ + progs/demos/Fractals_random/Fractals_randomStatic_vs2008.vcproj \ + progs/demos/Fractals_random/Fractals_random_vs2008.vcproj \ + progs/demos/Lorenz/lorenzStatic.dsp \ + progs/demos/Lorenz/lorenzStatic_vs2008.vcproj \ + progs/demos/Lorenz/lorenz_vs2008.vcproj \ + progs/demos/One/oneStatic.dsp \ + progs/demos/One/oneStatic_vs2008.vcproj \ + progs/demos/One/one_vs2008.vcproj \ + progs/demos/demos_vs2008.sln \ + progs/demos/shapes/shapesStatic.dsp \ + progs/demos/shapes/shapesStatic_vs2008.vcproj \ + progs/demos/shapes/shapes_vs2008.vcproj \ + progs/demos/smooth_opengl3/smooth_opengl3Static.dsp \ + progs/demos/smooth_opengl3/smooth_opengl3Static_vs2008.vcproj \ + progs/demos/smooth_opengl3/smooth_opengl3_vs2008.vcproj # Thanks to WinDoze, some files in CVS have the "execute" bit set when they # shoudn't. We could fix this if we had direct access to the CVS repository, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-04-05 13:50:29
|
Revision: 813 http://freeglut.svn.sourceforge.net/freeglut/?rev=813&view=rev Author: spanne Date: 2009-04-05 13:50:17 +0000 (Sun, 05 Apr 2009) Log Message: ----------- We are at version 2.6.0 now. Modified Paths: -------------- trunk/freeglut/freeglut/freeglut.rc trunk/freeglut/freeglut/freeglut.spec Modified: trunk/freeglut/freeglut/freeglut.rc =================================================================== --- trunk/freeglut/freeglut/freeglut.rc 2009-04-05 13:13:31 UTC (rev 812) +++ trunk/freeglut/freeglut/freeglut.rc 2009-04-05 13:50:17 UTC (rev 813) @@ -2,8 +2,8 @@ /* 0 ICON DISCARDABLE "OpenGL.ico" */ 1 VERSIONINFO - FILEVERSION 2,4,0,0 - PRODUCTVERSION 2,4,0,0 + FILEVERSION 2,6,0,0 + PRODUCTVERSION 2,6,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -21,14 +21,14 @@ /* VALUE "Comments", "\0" */ /* VALUE "CompanyName", "\0" */ VALUE "FileDescription", "Freeglut OpenGL Utility Toolkit\0" - VALUE "FileVersion", "2, 4, 0, 0\0" + VALUE "FileVersion", "2, 6, 0, 0\0" VALUE "InternalName", "freeglutdll\0" VALUE "LegalCopyright", "Copyright \xA9 1999-2000 Pawel W. Olszta\0" /* VALUE "LegalTrademarks", "\0" */ VALUE "OriginalFilename", "freeglut.dll\0" /* VALUE "PrivateBuild", "\0" */ VALUE "ProductName", "Freeglut OpenGL Utility Toolkit\0" - VALUE "ProductVersion", "2, 4, 0, 0\0" + VALUE "ProductVersion", "2, 6, 0, 0\0" /* VALUE "SpecialBuild", "\0" */ END END Modified: trunk/freeglut/freeglut/freeglut.spec =================================================================== --- trunk/freeglut/freeglut/freeglut.spec 2009-04-05 13:13:31 UTC (rev 812) +++ trunk/freeglut/freeglut/freeglut.spec 2009-04-05 13:50:17 UTC (rev 813) @@ -1,5 +1,5 @@ # -# spec file for package freeglut (Version 2.4.0) +# spec file for package freeglut (Version 2.6.0) # # Copyright (c) 2005 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -15,7 +15,7 @@ Name: freeglut Summary: Freely Licensed Alternative to the GLUT Library -Version: 2.4.0 +Version: 2.6.0 Release: 1 URL: http://freeglut.sourceforge.net/ Source0: http://switch.dl.sourceforge.net/sourceforge/freeglut/freeglut-%{version}.tar.gz @@ -108,6 +108,8 @@ %{_libdir}/libglut.so %changelog -n freeglut +* Sun Apr 05 2009 - sve...@ae... +- updated to release 2.6.0 * Sat Aug 05 2006 - sve...@ae... - Updated build requirements for SuSE 10.1 * Mon Jun 13 2005 - sve...@ae... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-05-22 14:12:37
|
Revision: 815 http://freeglut.svn.sourceforge.net/freeglut/?rev=815&view=rev Author: spanne Date: 2009-05-22 14:12:30 +0000 (Fri, 22 May 2009) Log Message: ----------- Removed obsolete lines. Fixed version number. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-05-22 14:07:13 UTC (rev 814) +++ trunk/freeglut/freeglut/ChangeLog 2009-05-22 14:12:30 UTC (rev 815) @@ -1,3 +1,7 @@ +2009-05-22 Sven Panne <sve...@ae...> + + * src/freeglutdll.def: Removed obsolete lines. Fixed version number. + 2009-04-05 Sven Panne <sve...@ae...> * Makefile.am: Added more project/workspace/... files to distribution. Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2009-05-22 14:07:13 UTC (rev 814) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2009-05-22 14:12:30 UTC (rev 815) @@ -1,6 +1,4 @@ -LIBRARY freeglutdll -DESCRIPTION "Freeglut OpenGL Utility Toolkit" -VERSION 2.6.0 +VERSION 2.6 EXPORTS glutInit glutInitWindowPosition This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-05-22 15:20:11
|
Revision: 818 http://freeglut.svn.sourceforge.net/freeglut/?rev=818&view=rev Author: spanne Date: 2009-05-22 15:20:03 +0000 (Fri, 22 May 2009) Log Message: ----------- Added the ugly ATEXIT_HACK from GLUT 3.7, making freeglut binary compatible with the GLUT DLLs out in the wild. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/include/GL/freeglut_std.h trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_menu.c trunk/freeglut/freeglut/src/freeglut_window.c trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/ChangeLog 2009-05-22 15:20:03 UTC (rev 818) @@ -1,4 +1,8 @@ 2009-05-22 Sven Panne <sve...@ae...> + * include/GL/freeglut_std.h,src/freeglut_init.c,src/freeglut_internal.h, + src/freeglut_menu.c,src/freeglut_window.c,src/freeglutdll.def: Added the + ugly ATEXIT_HACK from GLUT 3.7, making freeglut binary compatible with the + GLUT DLLs out in the wild. * src/freeglutdll.def: Removed obsolete lines. Fixed version number. Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-05-22 15:20:03 UTC (rev 818) @@ -574,6 +574,45 @@ FGAPI int FGAPIENTRY glutExtensionSupported( const char* extension ); FGAPI void FGAPIENTRY glutReportErrors( void ); +/* Comment from glut.h of classic GLUT: + + Win32 has an annoying issue where there are multiple C run-time + libraries (CRTs). If the executable is linked with a different CRT + from the GLUT DLL, the GLUT DLL will not share the same CRT static + data seen by the executable. In particular, atexit callbacks registered + in the executable will not be called if GLUT calls its (different) + exit routine). GLUT is typically built with the + "/MD" option (the CRT with multithreading DLL support), but the Visual + C++ linker default is "/ML" (the single threaded CRT). + + One workaround to this issue is requiring users to always link with + the same CRT as GLUT is compiled with. That requires users supply a + non-standard option. GLUT 3.7 has its own built-in workaround where + the executable's "exit" function pointer is covertly passed to GLUT. + GLUT then calls the executable's exit function pointer to ensure that + any "atexit" calls registered by the application are called if GLUT + needs to exit. + + Note that the __glut*WithExit routines should NEVER be called directly. + To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ + +/* to get the prototype for exit() */ +#include <stdlib.h> + +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) +FGAPI void FGAPIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); +FGAPI int FGAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); +FGAPI int FGAPIENTRY __glutCreateMenuWithExit(void (* func)(int), void (__cdecl *exitfunc)(int)); +#ifndef FREEGLUT_BUILDING_LIB +static void FGAPIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } +#define glutInit glutInit_ATEXIT_HACK +static int FGAPIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } +#define glutCreateWindow glutCreateWindow_ATEXIT_HACK +static int FGAPIENTRY glutCreateMenu_ATEXIT_HACK(void (* func)(int)) { return __glutCreateMenuWithExit(func, exit); } +#define glutCreateMenu glutCreateMenu_ATEXIT_HACK +#endif +#endif + #ifdef __cplusplus } #endif Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2009-05-22 15:20:03 UTC (rev 818) @@ -25,6 +25,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#define FREEGLUT_BUILDING_LIB #include <GL/freeglut.h> #include "freeglut_internal.h" @@ -853,6 +854,16 @@ } } +#ifdef _WIN32 +void (__cdecl *__glutExitFunc)( int retval ) = NULL; + +void FGAPIENTRY __glutInitWithExit( int *argcp, char **argv, void (__cdecl *exitfunc)(int) ) +{ + __glutExitFunc = exitfunc; + glutInit(argcp, argv); +} +#endif + /* * Undoes all the "glutInit" stuff */ Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2009-05-22 15:20:03 UTC (rev 818) @@ -933,6 +933,10 @@ SFG_Proc fghGetProcAddress( const char *procName ); +#ifdef _WIN32 +extern void (__cdecl *__glutExitFunc)( int retval ); +#endif + #endif /* FREEGLUT_INTERNAL_H */ /*** END OF FILE ***/ Modified: trunk/freeglut/freeglut/src/freeglut_menu.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_menu.c 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/src/freeglut_menu.c 2009-05-22 15:20:03 UTC (rev 818) @@ -25,6 +25,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#define FREEGLUT_BUILDING_LIB #include <GL/freeglut.h> #include "freeglut_internal.h" @@ -778,6 +779,12 @@ return fgCreateMenu( callback )->ID; } +int FGAPIENTRY __glutCreateMenuWithExit( void(* callback)( int ), void (__cdecl *exitfunc)(int) ) +{ + __glutExitFunc = exitfunc; + return glutCreateMenu( callback ); +} + /* * Destroys a menu object, removing all references to it */ Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2009-05-22 15:20:03 UTC (rev 818) @@ -25,6 +25,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#define FREEGLUT_BUILDING_LIB #include <GL/freeglut.h> #include "freeglut_internal.h" @@ -1092,6 +1093,14 @@ GL_FALSE, GL_FALSE )->ID; } +#ifdef _WIN32 +int FGAPIENTRY __glutCreateWindowWithExit( const char *title, void (__cdecl *exitfunc)(int) ) +{ + __glutExitFunc = exitfunc; + return glutCreateWindow( title ); +} +#endif + /* * This function creates a sub window. */ Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2009-05-22 14:15:49 UTC (rev 817) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2009-05-22 15:20:03 UTC (rev 818) @@ -154,3 +154,6 @@ glutGetModeValues glutInitContextFlags glutInitContextVersion + __glutInitWithExit + __glutCreateWindowWithExit + __glutCreateMenuWithExit This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-05-22 15:50:27
|
Revision: 819 http://freeglut.svn.sourceforge.net/freeglut/?rev=819&view=rev Author: spanne Date: 2009-05-22 15:50:24 +0000 (Fri, 22 May 2009) Log Message: ----------- Avoid warnings when the ATEXIT_HACK is used with GCC, making the hack even uglier. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/include/GL/freeglut_std.h Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-05-22 15:20:03 UTC (rev 818) +++ trunk/freeglut/freeglut/ChangeLog 2009-05-22 15:50:24 UTC (rev 819) @@ -1,4 +1,7 @@ 2009-05-22 Sven Panne <sve...@ae...> + * include/GL/freeglut_std.h: Avoid warnings when the ATEXIT_HACK is used + with GCC, making the hack even uglier. + * include/GL/freeglut_std.h,src/freeglut_init.c,src/freeglut_internal.h, src/freeglut_menu.c,src/freeglut_window.c,src/freeglutdll.def: Added the ugly ATEXIT_HACK from GLUT 3.7, making freeglut binary compatible with the Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-05-22 15:20:03 UTC (rev 818) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-05-22 15:50:24 UTC (rev 819) @@ -604,11 +604,16 @@ FGAPI int FGAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); FGAPI int FGAPIENTRY __glutCreateMenuWithExit(void (* func)(int), void (__cdecl *exitfunc)(int)); #ifndef FREEGLUT_BUILDING_LIB -static void FGAPIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } +#if defined(__GNUC__) +#define FGUNUSED __attribute__((unused)) +#else +#define FGUNUSED +#endif +static void FGAPIENTRY FGUNUSED glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } #define glutInit glutInit_ATEXIT_HACK -static int FGAPIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } +static int FGAPIENTRY FGUNUSED glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } #define glutCreateWindow glutCreateWindow_ATEXIT_HACK -static int FGAPIENTRY glutCreateMenu_ATEXIT_HACK(void (* func)(int)) { return __glutCreateMenuWithExit(func, exit); } +static int FGAPIENTRY FGUNUSED glutCreateMenu_ATEXIT_HACK(void (* func)(int)) { return __glutCreateMenuWithExit(func, exit); } #define glutCreateMenu glutCreateMenu_ATEXIT_HACK #endif #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-05-23 12:50:48
|
Revision: 823 http://freeglut.svn.sourceforge.net/freeglut/?rev=823&view=rev Author: spanne Date: 2009-05-23 12:50:37 +0000 (Sat, 23 May 2009) Log Message: ----------- Put static library stuff into its own solution. This way, a rather uncommon way doesn't clutter up our normal solution, which is DLL-based. Modified Paths: -------------- trunk/freeglut/freeglut/freeglut_vs2008.sln Added Paths: ----------- trunk/freeglut/freeglut/freeglut_vs2008_static.sln Property Changed: ---------------- trunk/freeglut/freeglut/ Property changes on: trunk/freeglut/freeglut ___________________________________________________________________ Modified: svn:ignore - INSTALL Makefile Makefile.in aclocal.m4 autom4te.cache autoscan.log compile config.guess config.h config.h.in config.log config.status config.sub configure configure.scan debugfiles.list debugsources.list depcomp freeglut-*.tar.gz install-sh libtool ltmain.sh man-pages missing stamp-h1 config.lt freeglut_vs2008.ncb freeglut_vs2008.suo freeglut_vs2008.vcproj.*.user freeglut_static_vs2008.vcproj.*.user Debug Release + INSTALL Makefile Makefile.in aclocal.m4 autom4te.cache autoscan.log compile config.guess config.h config.h.in config.log config.status config.sub configure configure.scan debugfiles.list debugsources.list depcomp freeglut-*.tar.gz install-sh libtool ltmain.sh man-pages missing stamp-h1 config.lt *.ncb *.suo freeglut_vs2008.vcproj.*.user freeglut_static_vs2008.vcproj.*.user Debug Release DebugStatic ReleaseStatic Modified: trunk/freeglut/freeglut/freeglut_vs2008.sln =================================================================== --- trunk/freeglut/freeglut/freeglut_vs2008.sln 2009-05-23 12:42:05 UTC (rev 822) +++ trunk/freeglut/freeglut/freeglut_vs2008.sln 2009-05-23 12:50:37 UTC (rev 823) @@ -1,10 +1,8 @@ Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 +# Visual C++ Express 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freeglut", "freeglut_vs2008.vcproj", "{1AE4E979-0D35-4747-BF8E-DD60358F49DB}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freeglut_static", "freeglut_static_vs2008.vcproj", "{71AF75A0-52B6-4C1B-8E56-CB31C6741A18}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -15,10 +13,6 @@ {1AE4E979-0D35-4747-BF8E-DD60358F49DB}.Debug|Win32.Build.0 = Debug|Win32 {1AE4E979-0D35-4747-BF8E-DD60358F49DB}.Release|Win32.ActiveCfg = Release|Win32 {1AE4E979-0D35-4747-BF8E-DD60358F49DB}.Release|Win32.Build.0 = Release|Win32 - {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Debug|Win32.ActiveCfg = Debug|Win32 - {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Debug|Win32.Build.0 = Debug|Win32 - {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Release|Win32.ActiveCfg = Release|Win32 - {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Added: trunk/freeglut/freeglut/freeglut_vs2008_static.sln =================================================================== --- trunk/freeglut/freeglut/freeglut_vs2008_static.sln (rev 0) +++ trunk/freeglut/freeglut/freeglut_vs2008_static.sln 2009-05-23 12:50:37 UTC (rev 823) @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freeglut_static", "freeglut_static_vs2008.vcproj", "{71AF75A0-52B6-4C1B-8E56-CB31C6741A18}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Debug|Win32.ActiveCfg = Debug|Win32 + {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Debug|Win32.Build.0 = Debug|Win32 + {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Release|Win32.ActiveCfg = Release|Win32 + {71AF75A0-52B6-4C1B-8E56-CB31C6741A18}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-06-11 08:25:33
|
Revision: 826 http://freeglut.svn.sourceforge.net/freeglut/?rev=826&view=rev Author: spanne Date: 2009-06-11 08:25:25 +0000 (Thu, 11 Jun 2009) Log Message: ----------- Disable the ATEXIT_HACK for Watcom, their "exit" function has a different calling convention, leading to compilation errors. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/include/GL/freeglut_std.h Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-05-31 13:00:44 UTC (rev 825) +++ trunk/freeglut/freeglut/ChangeLog 2009-06-11 08:25:25 UTC (rev 826) @@ -1,3 +1,9 @@ +2009-06-11 Sven Panne <sve...@ae...> + + * include/GL/freeglut_std.h: Disable the ATEXIT_HACK for Watcom, their + "exit" function has a different calling convention, leading to + compilation errors. + 2009-05-24 Sven Panne <sve...@ae...> * freeglut_static_vs2008.vcproj,freeglut_vs2008.vcproj, Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-05-31 13:00:44 UTC (rev 825) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-06-11 08:25:25 UTC (rev 826) @@ -599,7 +599,7 @@ /* to get the prototype for exit() */ #include <stdlib.h> -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) && !defined(__WATCOMC__) FGAPI void FGAPIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); FGAPI int FGAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); FGAPI int FGAPIENTRY __glutCreateMenuWithExit(void (* func)(int), void (__cdecl *exitfunc)(int)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-06-22 18:54:49
|
Revision: 827 http://freeglut.svn.sourceforge.net/freeglut/?rev=827&view=rev Author: fayjf Date: 2009-06-22 18:54:41 +0000 (Mon, 22 Jun 2009) Log Message: ----------- Changing the OpenWatCom support per e-mail from Paul Blew dated Thu 6/11/2009 3:35 AM Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/README.win32 Added Paths: ----------- trunk/freeglut/freeglut/Makefile.wat Removed Paths: ------------- trunk/freeglut/freeglut/freeglut.tgt trunk/freeglut/freeglut/freeglut.wpj trunk/freeglut/freeglut/freeglut_static.tgt Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-06-11 08:25:25 UTC (rev 826) +++ trunk/freeglut/freeglut/ChangeLog 2009-06-22 18:54:41 UTC (rev 827) @@ -1,3 +1,7 @@ +2009-06-11 Paul Blew <pau...@no...> + + * replaced broken IDE based OpenWatcom build with a makefile based one + 2009-06-11 Sven Panne <sve...@ae...> * include/GL/freeglut_std.h: Disable the ATEXIT_HACK for Watcom, their Added: trunk/freeglut/freeglut/Makefile.wat =================================================================== --- trunk/freeglut/freeglut/Makefile.wat (rev 0) +++ trunk/freeglut/freeglut/Makefile.wat 2009-06-22 18:54:41 UTC (rev 827) @@ -0,0 +1,206 @@ +# +# Makefile.wat +# Open Watcom makefile for Freeglut +# Usage: +# wmake -f Makefile.wat {target} +# Where target is one of: +# debug-static +# debug-dynamic +# release-static +# release-dynamic +# debug +# release +# all +# clean +# Assumes: +# WATCOM enviroment variable points to your Watcom installation directory +# %WATCOM%\BINNT and %WATCOM%\BINW are in your path +# +RELEASE_STATIC_DIR = release-static +RELEASE_DYNAMIC_DIR = release-dynamic +DEBUG_STATIC_DIR = debug-static +DEBUG_DYNAMIC_DIR = debug-dynamic + +INCLUDE_DIR = ..\include +SRC_DIR = ..\src +COMPILER = wcc386 +COMPILE_COMMON_OPTIONS = -i$(INCLUDE_DIR);$(%WATCOM)\h;$(%WATCOM)\h\nt -fp6 -w4 -e25 -wcd202 -bt=nt -mf -zq +COMPILE_DEBUG_OPTIONS = -d3 -od -DDEBUG -D_DEBUG +COMPILE_RELEASE_OPTIONS = -d0 -otexanh +COMPILE_STATIC_OPTIONS = -DFREEGLUT_STATIC -6r +COMPILE_DYNAMIC_OPTIONS = -DFREEGLUT_EXPORTS -6s -bd -bm +COMPILE_OPTIONS = $(COMPILE_COMMON_OPTIONS) $(COMPILE_$(MODE)_OPTIONS) $(COMPILE_$(TYPE)_OPTIONS) + +LINKER = wlink +LINK_OPTIONS = SYS nt_dll op m op maxe=25 op q op symf FIL + +LIB_TOOL = wlib +LIB_COMMON_OPTIONS = -q -n -b +LIB_DYNAMIC_OPTIONS = +LIB_STATIC_OPTIONS = -c -p=512 +LIB_OPTIONS = $(LIB_COMMON_OPTIONS) $(LIB_$(TYPE)_OPTIONS) + +MAKE = wmake -h -f ..\Makefile.wat + +OBJ_FILES = & + freeglut_callbacks.obj & + freeglut_cursor.obj & + freeglut_display.obj & + freeglut_ext.obj & + freeglut_font.obj & + freeglut_font_data.obj & + freeglut_gamemode.obj & + freeglut_geometry.obj & + freeglut_glutfont_definitions.obj & + freeglut_init.obj & + freeglut_input_devices.obj & + freeglut_joystick.obj & + freeglut_main.obj & + freeglut_menu.obj & + freeglut_misc.obj & + freeglut_overlay.obj & + freeglut_state.obj & + freeglut_stroke_mono_roman.obj & + freeglut_stroke_roman.obj & + freeglut_structure.obj & + freeglut_teapot.obj & + freeglut_videoresize.obj & + freeglut_window.obj + +default : .SYMBOLIC + @echo Usage: + @echo wmake -f Makefile.wat {target} + @echo Where target is one of: + @echo debug-static + @echo debug-dynamic + @echo release-static + @echo release-dynamic + @echo debug + @echo release + @echo all + @echo clean + +# static library +freeglut_static.lib : $(OBJ_FILES) + $(LIB_TOOL) $(LIB_OPTIONS) $^* $(OBJ_FILES) + +# dynamic link library +freeglut.dll : $(OBJ_FILES) + $(LINKER) name $^* $(LINK_OPTIONS) $(OBJ_FILES: =,) + +freeglut.lib : freeglut.dll + $(LIB_TOOL) $(LIB_OPTIONS) $^. +$[. + + +freeglut_callbacks.obj : $(SRC_DIR)\freeglut_callbacks.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_cursor.obj : $(SRC_DIR)\freeglut_cursor.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_display.obj : $(SRC_DIR)\freeglut_display.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_ext.obj : $(SRC_DIR)\freeglut_ext.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_font.obj : $(SRC_DIR)\freeglut_font.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_font_data.obj : $(SRC_DIR)\freeglut_font_data.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_gamemode.obj : $(SRC_DIR)\freeglut_gamemode.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_geometry.obj : $(SRC_DIR)\freeglut_geometry.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_glutfont_definitions.obj : $(SRC_DIR)\freeglut_glutfont_definitions.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_init.obj : $(SRC_DIR)\freeglut_init.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_input_devices.obj : $(SRC_DIR)\freeglut_input_devices.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_joystick.obj : $(SRC_DIR)\freeglut_joystick.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_main.obj : $(SRC_DIR)\freeglut_main.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_menu.obj : $(SRC_DIR)\freeglut_menu.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_misc.obj : $(SRC_DIR)\freeglut_misc.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_overlay.obj : $(SRC_DIR)\freeglut_overlay.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_state.obj : $(SRC_DIR)\freeglut_state.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_stroke_mono_roman.obj : $(SRC_DIR)\freeglut_stroke_mono_roman.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_stroke_roman.obj : $(SRC_DIR)\freeglut_stroke_roman.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_structure.obj : $(SRC_DIR)\freeglut_structure.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_teapot.obj : $(SRC_DIR)\freeglut_teapot.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_videoresize.obj : $(SRC_DIR)\freeglut_videoresize.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +freeglut_window.obj : $(SRC_DIR)\freeglut_window.c + $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) + +clean : .SYMBOLIC + @-del $(DEBUG_STATIC_DIR)\*.obj + @-del $(DEBUG_DYNAMIC_DIR)\*.obj + @-del $(RELEASE_STATIC_DIR)\*.obj + @-del $(RELEASE_DYNAMIC_DIR)\*.obj + @echo All object files removed + +debug-static : .SYMBOLIC + @-if not exist $(DEBUG_STATIC_DIR)\. mkdir $(DEBUG_STATIC_DIR) + @-cd $(DEBUG_STATIC_DIR) + @$(MAKE) MODE=DEBUG TYPE=STATIC freeglut_static.lib + @-cd .. + @echo Debug static library up to date + +debug-dynamic : .SYMBOLIC + @-if not exist $(DEBUG_DYNAMIC_DIR)\. mkdir $(DEBUG_DYNAMIC_DIR) + @-cd $(DEBUG_DYNAMIC_DIR) + @$(MAKE) MODE=DEBUG TYPE=DYNAMIC freeglut.lib + @-cd .. + @echo Debug dynamic link library up to date + +release-static : .SYMBOLIC + @-if not exist $(RELEASE_STATIC_DIR)\. mkdir $(RELEASE_STATIC_DIR) + @-cd $(RELEASE_STATIC_DIR) + @$(MAKE) MODE=RELEASE TYPE=STATIC freeglut_static.lib + @-cd .. + @echo Release static library up to date + +release-dynamic : .SYMBOLIC + @-if not exist $(RELEASE_DYNAMIC_DIR)\. mkdir $(RELEASE_DYNAMIC_DIR) + @-cd $(RELEASE_DYNAMIC_DIR) + @$(MAKE) MODE=RELEASE TYPE=DYNAMIC freeglut.lib + @-cd .. + @echo Release dynamic link library up to date + +debug : debug-static debug-dynamic .SYMBOLIC + @echo Debug targets up to date + +release : release-static release-dynamic .SYMBOLIC + @echo Release targets up to date + +all : debug release .SYMBOLIC + @echo All targets up to date Modified: trunk/freeglut/freeglut/README.win32 =================================================================== --- trunk/freeglut/freeglut/README.win32 2009-06-11 08:25:25 UTC (rev 826) +++ trunk/freeglut/freeglut/README.win32 2009-06-22 18:54:41 UTC (rev 827) @@ -62,20 +62,30 @@ Building and Installing the Libraries with Open Watcom ====================================================== -To build the "freeglut" libraries, open Watcom and load the "freeglut.wpj" -file. This will load the two target files. Clicking on the "Make All -Targets" button will build both the debug and the release versions of both -libraries. +Start a command prompt and change directory to the freeglut installation +directory. Type "wmake -f Makefile.wat all" to build the DLL and static +libraries in both debug and release versions. -The "make" script will copy the library files to the Open Watcom library -folder and will copy "freeglut.dll" to the correct "System32" folder. The -library files are named "freeglut.lib" for the DLL version and -"freeglut_static.lib"for the static library. +To install "freeglut" on your system so that your other projects will see it, +you will need to copy various files to various locations. -You will need to copy the "freeglut" include files from their installed -location ("freeglut\freeglut\include\GL") to the Open Watcom include directory -("%WATCOM%\h\nt\GL"). + - The header files "freeglut.h", "freeglut_ext.h", "freeglut_std.h", and + "glut.h" (distributed in the directory "freeglut\freeglut\include\GL") + need to be copied to a "GL" directory under the Open Watcom 32-bit + Windows include directory. This usually has a path similar to + "C:\WATCOM\h\nt\GL" + - The library file "freeglut.lib" or "freeglut_static.lib" (from the + corresponding debug or release directory) needs to be copied into the + Open Watcom 32-bit Windows library directory. This usually has a path + similar to + "C:\WATCOM\lib386\nt" + - If you are using the DLL version of "freeglut", the file "freeglut.dll" + needs to be copied from the Debug or the Release directory into the + DLL directory. This usually has a path similar to + "C:\Windows\System32" + and will probably already have the files "opengl32.dll" and "glu32.dll". + Unlike the *nix release, the library names are NOT automatic replacements for the GLUT library names. You may rename them manually if you wish, but this is not necessary as the header file includes a pragma telling the compiler which Deleted: trunk/freeglut/freeglut/freeglut.tgt =================================================================== --- trunk/freeglut/freeglut/freeglut.tgt 2009-06-11 08:25:25 UTC (rev 826) +++ trunk/freeglut/freeglut/freeglut.tgt 2009-06-22 18:54:41 UTC (rev 827) @@ -1,678 +0,0 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -4 -NDLL -3 -WString -5 -n_2dn -1 -0 -0 -4 -MCommand -0 -5 -MCommand -77 -copy freeglut.dll %SystemRoot%\system32 -copy freeglut.lib %WATCOM%\lib386\nt -6 -MItem -12 -freeglut.dll -7 -WString -4 -NDLL -8 -WVList -1 -9 -MVState -10 -WString -5 -WLINK -11 -WString -17 -n????Description: -1 -12 -WString -31 -Freeglut OpenGL Utility Toolkit -0 -13 -WVList -1 -14 -ActionStates -15 -WString -5 -&Make -16 -WVList -0 --1 -1 -1 -0 -17 -WPickList -25 -18 -MItem -3 -*.c -19 -WString -4 -COBJ -20 -WVList -11 -21 -MVState -22 -WString -3 -WCC -23 -WString -25 -n????Include directories: -0 -24 -WString -42 -$(%watcom)\h;$(%watcom)\h\nt;..\..\include -0 -25 -MVState -26 -WString -3 -WCC -27 -WString -28 -?????Disable Warning message -0 -28 -WString -3 -202 -0 -29 -MVState -30 -WString -3 -WCC -31 -WString -23 -?????Macro definitions: -0 -32 -WString -16 -FREEGLUT_EXPORTS -0 -33 -MCState -34 -WString -3 -WCC -35 -WString -30 -n????Multithreaded application -0 -1 -36 -MRState -37 -WString -3 -WCC -38 -WString -35 -??2??Pentium Register based calling -0 -0 -39 -MRState -40 -WString -3 -WCC -41 -WString -32 -??2??Pentium Stack based calling -0 -1 -42 -MVState -43 -WString -3 -WCC -44 -WString -25 -n????Include directories: -1 -45 -WString -42 -$(%watcom)\h;$(%watcom)\h\nt;..\..\include -0 -46 -MVState -47 -WString -3 -WCC -48 -WString -28 -?????Disable Warning message -1 -49 -WString -3 -202 -0 -50 -MVState -51 -WString -3 -WCC -52 -WString -23 -?????Macro definitions: -1 -53 -WString -16 -FREEGLUT_EXPORTS -0 -54 -MRState -55 -WString -3 -WCC -56 -WString -35 -??2??Pentium Register based calling -1 -0 -57 -MRState -58 -WString -3 -WCC -59 -WString -32 -??2??Pentium Stack based calling -1 -1 -60 -WVList -0 --1 -1 -1 -0 -61 -MItem -30 -..\..\SRC\freeglut_callbacks.c -62 -WString -4 -COBJ -63 -WVList -0 -64 -WVList -0 -18 -1 -1 -0 -65 -MItem -27 -..\..\SRC\freeglut_cursor.c -66 -WString -4 -COBJ -67 -WVList -0 -68 -WVList -0 -18 -1 -1 -0 -69 -MItem -28 -..\..\SRC\freeglut_display.c -70 -WString -4 -COBJ -71 -WVList -0 -72 -WVList -0 -18 -1 -1 -0 -73 -MItem -24 -..\..\SRC\freeglut_ext.c -74 -WString -4 -COBJ -75 -WVList -0 -76 -WVList -0 -18 -1 -1 -0 -77 -MItem -25 -..\..\SRC\freeglut_font.c -78 -WString -4 -COBJ -79 -WVList -0 -80 -WVList -0 -18 -1 -1 -0 -81 -MItem -30 -..\..\SRC\freeglut_font_data.c -82 -WString -4 -COBJ -83 -WVList -0 -84 -WVList -0 -18 -1 -1 -0 -85 -MItem -29 -..\..\SRC\freeglut_gamemode.c -86 -WString -4 -COBJ -87 -WVList -0 -88 -WVList -0 -18 -1 -1 -0 -89 -MItem -29 -..\..\SRC\freeglut_geometry.c -90 -WString -4 -COBJ -91 -WVList -0 -92 -WVList -0 -18 -1 -1 -0 -93 -MItem -41 -..\..\SRC\freeglut_glutfont_definitions.c -94 -WString -4 -COBJ -95 -WVList -0 -96 -WVList -0 -18 -1 -1 -0 -97 -MItem -25 -..\..\SRC\freeglut_init.c -98 -WString -4 -COBJ -99 -WVList -0 -100 -WVList -0 -18 -1 -1 -0 -101 -MItem -29 -..\..\SRC\freeglut_joystick.c -102 -WString -4 -COBJ -103 -WVList -0 -104 -WVList -0 -18 -1 -1 -0 -105 -MItem -25 -..\..\SRC\freeglut_main.c -106 -WString -4 -COBJ -107 -WVList -0 -108 -WVList -0 -18 -1 -1 -0 -109 -MItem -25 -..\..\SRC\freeglut_menu.c -110 -WString -4 -COBJ -111 -WVList -0 -112 -WVList -0 -18 -1 -1 -0 -113 -MItem -25 -..\..\SRC\freeglut_misc.c -114 -WString -4 -COBJ -115 -WVList -0 -116 -WVList -0 -18 -1 -1 -0 -117 -MItem -28 -..\..\SRC\freeglut_overlay.c -118 -WString -4 -COBJ -119 -WVList -0 -120 -WVList -0 -18 -1 -1 -0 -121 -MItem -26 -..\..\SRC\freeglut_state.c -122 -WString -4 -COBJ -123 -WVList -0 -124 -WVList -0 -18 -1 -1 -0 -125 -MItem -38 -..\..\SRC\freeglut_stroke_mono_roman.c -126 -WString -4 -COBJ -127 -WVList -0 -128 -WVList -0 -18 -1 -1 -0 -129 -MItem -33 -..\..\SRC\freeglut_stroke_roman.c -130 -WString -4 -COBJ -131 -WVList -0 -132 -WVList -0 -18 -1 -1 -0 -133 -MItem -30 -..\..\SRC\freeglut_structure.c -134 -WString -4 -COBJ -135 -WVList -0 -136 -WVList -0 -18 -1 -1 -0 -137 -MItem -27 -..\..\SRC\freeglut_teapot.c -138 -WString -4 -COBJ -139 -WVList -0 -140 -WVList -0 -18 -1 -1 -0 -141 -MItem -32 -..\..\SRC\freeglut_videoresize.c -142 -WString -4 -COBJ -143 -WVList -0 -144 -WVList -0 -18 -1 -1 -0 -145 -MItem -27 -..\..\SRC\freeglut_window.c -146 -WString -4 -COBJ -147 -WVList -0 -148 -WVList -0 -18 -1 -1 -0 -149 -MItem -4 -*.rc -150 -WString -5 -NRESC -151 -WVList -0 -152 -WVList -0 --1 -1 -1 -0 -153 -MItem -14 -..\freeglut.rc -154 -WString -5 -NRESC -155 -WVList -0 -156 -WVList -0 -149 -1 -1 -0 Deleted: trunk/freeglut/freeglut/freeglut.wpj =================================================================== --- trunk/freeglut/freeglut/freeglut.wpj 2009-06-11 08:25:25 UTC (rev 826) +++ trunk/freeglut/freeglut/freeglut.wpj 2009-06-22 18:54:41 UTC (rev 827) @@ -1,63 +0,0 @@ -40 -projectIdent -0 -VpeMain -1 -WRect -1480 -150 -7680 -9400 -2 -MProject -3 -MCommand -0 -4 -MCommand -0 -2 -5 -WFileName -21 -win32dll\freeglut.tgt -6 -WFileName -28 -win32lib\freeglut_static.tgt -7 -WVList -2 -8 -VComponent -9 -WRect -0 -0 -3784 -4360 -0 -0 -10 -WFileName -21 -win32dll\freeglut.tgt -0 -24 -11 -VComponent -12 -WRect -3776 -0 -3840 -4360 -0 -0 -13 -WFileName -28 -win32lib\freeglut_static.tgt -0 -0 -8 Deleted: trunk/freeglut/freeglut/freeglut_static.tgt =================================================================== --- trunk/freeglut/freeglut/freeglut_static.tgt 2009-06-11 08:25:25 UTC (rev 826) +++ trunk/freeglut/freeglut/freeglut_static.tgt 2009-06-22 18:54:41 UTC (rev 827) @@ -1,556 +0,0 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -3 -LIB -3 -WString -5 -n_2sn -1 -0 -0 -4 -MCommand -0 -5 -MCommand -43 -copy freeglut_static.lib %WATCOM%\lib386\nt -6 -MItem -19 -freeglut_static.lib -7 -WString -3 -LIB -8 -WVList -0 -9 -WVList -0 --1 -1 -1 -0 -10 -WPickList -23 -11 -MItem -3 -*.c -12 -WString -4 -COBJ -13 -WVList -6 -14 -MVState -15 -WString -3 -WCC -16 -WString -25 -n????Include directories: -0 -17 -WString -42 -$(%watcom)\h;$(%watcom)\h\nt;..\..\include -0 -18 -MVState -19 -WString -3 -WCC -20 -WString -28 -?????Disable Warning message -0 -21 -WString -3 -202 -0 -22 -MVState -23 -WString -3 -WCC -24 -WString -23 -?????Macro definitions: -0 -25 -WString -15 -FREEGLUT_STATIC -0 -26 -MVState -27 -WString -3 -WCC -28 -WString -25 -n????Include directories: -1 -29 -WString -42 -$(%watcom)\h;$(%watcom)\h\nt;..\..\include -0 -30 -MVState -31 -WString -3 -WCC -32 -WString -28 -?????Disable Warning message -1 -33 -WString -3 -202 -0 -34 -MVState -35 -WString -3 -WCC -36 -WString -23 -?????Macro definitions: -1 -37 -WString -15 -FREEGLUT_STATIC -0 -38 -WVList -0 --1 -1 -1 -0 -39 -MItem -30 -..\..\SRC\freeglut_callbacks.c -40 -WString -4 -COBJ -41 -WVList -0 -42 -WVList -0 -11 -1 -1 -0 -43 -MItem -27 -..\..\SRC\freeglut_cursor.c -44 -WString -4 -COBJ -45 -WVList -0 -46 -WVList -0 -11 -1 -1 -0 -47 -MItem -28 -..\..\SRC\freeglut_display.c -48 -WString -4 -COBJ -49 -WVList -0 -50 -WVList -0 -11 -1 -1 -0 -51 -MItem -24 -..\..\SRC\freeglut_ext.c -52 -WString -4 -COBJ -53 -WVList -0 -54 -WVList -0 -11 -1 -1 -0 -55 -MItem -25 -..\..\SRC\freeglut_font.c -56 -WString -4 -COBJ -57 -WVList -0 -58 -WVList -0 -11 -1 -1 -0 -59 -MItem -30 -..\..\SRC\freeglut_font_data.c -60 -WString -4 -COBJ -61 -WVList -0 -62 -WVList -0 -11 -1 -1 -0 -63 -MItem -29 -..\..\SRC\freeglut_gamemode.c -64 -WString -4 -COBJ -65 -WVList -0 -66 -WVList -0 -11 -1 -1 -0 -67 -MItem -29 -..\..\SRC\freeglut_geometry.c -68 -WString -4 -COBJ -69 -WVList -0 -70 -WVList -0 -11 -1 -1 -0 -71 -MItem -41 -..\..\SRC\freeglut_glutfont_definitions.c -72 -WString -4 -COBJ -73 -WVList -0 -74 -WVList -0 -11 -1 -1 -0 -75 -MItem -25 -..\..\SRC\freeglut_init.c -76 -WString -4 -COBJ -77 -WVList -0 -78 -WVList -0 -11 -1 -1 -0 -79 -MItem -29 -..\..\SRC\freeglut_joystick.c -80 -WString -4 -COBJ -81 -WVList -0 -82 -WVList -0 -11 -1 -1 -0 -83 -MItem -25 -..\..\SRC\freeglut_main.c -84 -WString -4 -COBJ -85 -WVList -0 -86 -WVList -0 -11 -1 -1 -0 -87 -MItem -25 -..\..\SRC\freeglut_menu.c -88 -WString -4 -COBJ -89 -WVList -0 -90 -WVList -0 -11 -1 -1 -0 -91 -MItem -25 -..\..\SRC\freeglut_misc.c -92 -WString -4 -COBJ -93 -WVList -0 -94 -WVList -0 -11 -1 -1 -0 -95 -MItem -28 -..\..\SRC\freeglut_overlay.c -96 -WString -4 -COBJ -97 -WVList -0 -98 -WVList -0 -11 -1 -1 -0 -99 -MItem -26 -..\..\SRC\freeglut_state.c -100 -WString -4 -COBJ -101 -WVList -0 -102 -WVList -0 -11 -1 -1 -0 -103 -MItem -38 -..\..\SRC\freeglut_stroke_mono_roman.c -104 -WString -4 -COBJ -105 -WVList -0 -106 -WVList -0 -11 -1 -1 -0 -107 -MItem -33 -..\..\SRC\freeglut_stroke_roman.c -108 -WString -4 -COBJ -109 -WVList -0 -110 -WVList -0 -11 -1 -1 -0 -111 -MItem -30 -..\..\SRC\freeglut_structure.c -112 -WString -4 -COBJ -113 -WVList -0 -114 -WVList -0 -11 -1 -1 -0 -115 -MItem -27 -..\..\SRC\freeglut_teapot.c -116 -WString -4 -COBJ -117 -WVList -0 -118 -WVList -0 -11 -1 -1 -0 -119 -MItem -32 -..\..\SRC\freeglut_videoresize.c -120 -WString -4 -COBJ -121 -WVList -0 -122 -WVList -0 -11 -1 -1 -0 -123 -MItem -27 -..\..\SRC\freeglut_window.c -124 -WString -4 -COBJ -125 -WVList -0 -126 -WVList -0 -11 -1 -1 -0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-07-12 14:07:21
|
Revision: 829 http://freeglut.svn.sourceforge.net/freeglut/?rev=829&view=rev Author: fayjf Date: 2009-07-12 14:07:19 +0000 (Sun, 12 Jul 2009) Log Message: ----------- Adding the Cygwin/mingw documentation from Jean-Seb (see e-mail dated Thu 7/9/2009 5:51 PM) Added Paths: ----------- trunk/freeglut/freeglut/LISEZMOI.cygwin_mingw trunk/freeglut/freeglut/README.cygwin_mingw Added: trunk/freeglut/freeglut/LISEZMOI.cygwin_mingw =================================================================== --- trunk/freeglut/freeglut/LISEZMOI.cygwin_mingw (rev 0) +++ trunk/freeglut/freeglut/LISEZMOI.cygwin_mingw 2009-07-12 14:07:19 UTC (rev 829) @@ -0,0 +1,218 @@ +Glut alors! + +Par Jean-Seb le vendredi 10 juillet 2009, 00:18 + + +Freeglut est une \xE9volution open-source de Glut. +Sous Windows, on peut l'utiliser avec Cygwin. +Facile ? Oui, si on accepte de distribuer "cygwin1.dll" +Aidons Freeglut \xE0 conqu\xE9rir son ind\xE9pendance ! +m.\xE0.j 10/7/2009 : g\xE9n\xE9ration d'une librairie pour linker depuis la dll. + + +R\xE9cup\xE9ration des sources + + * Reprenez les sources de la version 2.6.0 qui int\xE8gre les changements + r\xE9cents. + * Pour l'instant, il s'agit d'une RC (Release Candidate), mais la version + finale ne saurait tarder. + * L'utilisation de la 2.6 est pr\xE9f\xE9rable \xE0 la branche 2.4-stable, de + nombreux bugs \xE9tant corrig\xE9s. + * Vous trouverez les sources sur le site de Freeglut: + o http://freeglut.sourceforge.net/ + + +Principe +Objectif + + * Nous allons cr\xE9er une dll li\xE9e \xE0 Cygwin, et une biblioth\xE8que statique + ind\xE9pendante + * Nous cr\xE9erons \xE9galement une librairie dynamique, permettant de linker avec + la dll. + +Liste des fichiers g\xE9n\xE9r\xE9s + + * freeglut.dll : une dll classique pour le linkage dynamique. + * libfreeglut.a : la biblioth\xE8que statique. Le programme final est autonome + (du moins pour OpenGL). + * libfreeglutdll.a : la biblioth\xE8que dynamique. Le programme final a besoin + de freeglut.dll. + + +Pr\xE9paration + + * D\xE9pliez l'archive freeglut. + * Allez dans le r\xE9pertoire src (situ\xE9 \xE0 la racine du r\xE9pertoire Freeglut), + et cr\xE9ez un sous-r\xE9pertoire "Gl" + o Dans ce sous-r\xE9pertoire, copiez les fichiers du r\xE9pertoire + "include/Gl" + + * Pourquoi faut-il cr\xE9er un r\xE9pertoire "Gl" pour la compilation ? + o C'\xE9tait juste pour simplifier les choses lors de mes essais. + o Sinon vous pouvez cr\xE9er directement les r\xE9pertoires, et copier les + fichiers comme indiqu\xE9 au point installation (lire plus loin). + + * Faites un peu de m\xE9nage dans /lib : + o Effacez toutes les r\xE9f\xE9rences \xE0 la glut, pour ne pas avoir de + conflit au linkage. + o Cette \xE9tape est facultative, vous pouvez \xE9galement choisir de ne + faire le m\xE9nage qu' apr\xE8s une compilation r\xE9ussie de Freeglut. + o Attention \xE0 ne pas effacer, dans un enthousiasme r\xE9dempteur, la + biblioth\xE8que glu32.lib (\xE0 ne pas confondre avec glut32.lib). + + +Compilation + + * Oubliez le triptyque ./configure , make , make install. + o Ca ne marche pas du tout avec Cygwin. + + * Voici un Makefile qui fera l'affaire: + +#Makefile pour Freeglut 2.6.0-rc et Cygwin +#A placer dans le r\xE9pertoire "src" + +sources=$(wildcard *.c) +objs=$(sources:.c=.o) +libname=freeglut + + +CFLAGS=-O2 -DTARGET_HOST_MS_WINDOWS -DX_DISPLAY_MISSING -DFREEGLUT_STATIC -I./ +LDFLAGS=-lopengl32 -lgdi32 -lwinmm + +nocyg=-mno-cygwin -mwindows + +all: $(objs) + #construction dll li\xE9e \xE0 cygwin1.dll + gcc $(nocyg) $(objs) -shared $(LDFLAGS) -o $(libname).dll + nm $(libname).dll | awk 'BEGIN { print "EXPORTS" } /T _glut/ {sub( /^.*T _/, "\t"); print}' > $(libname).def + dlltool --dllname $(libname).dll --input-def $(libname).def --output-lib lib$(libname)dll.a + + #construction biblioth\xE8que statique ind\xE9pendante de cygwin + ar cr lib$(libname).a $(objs) + #pas forc\xE9ment obligatoire (cr\xE9ation d'un index pour acc\xE9l\xE9rer les acc\xE8s) + ranlib lib$(libname).a + +%.o: %.c + gcc $(nocyg) -c $(CFLAGS) $< + +clean: + rm -f *.o $(libname).dll $(libname).def lib$(libname)dll.a lib$(libname).a + + + + +Quelques remarques sur le makefile + + * Ce makefile cr\xE9e une dll, une biblioth\xE8que statique (une archive, en + d'autres termes) et la biblioth\xE8que dynamique qui permettra l'utilisation + de la dll. + + * Ne cherchez pas \xE0 stripper la biblioth\xE8que statique! Vous ne pourriez plus + compiler en statique. + o Par contre, vous pouvez stripper l'ex\xE9cutable final obtenu lors de + la compilation de votre application. + + * J'ai choisi d'appeller la dll et les biblioth\xE8ques par leurs "vrais noms": + freeglut.dll libfreeglutdll.a et libfreeglut.a. + o Le script configure recr\xE9ait (pour des raisons de compatibilit\xE9 avec + l'ancienne biblioth\xE8que Glut) glut.dll et libglut.a. + o Lors des mes essais, j'ai eu des conflits avec une authentique + "glut" qui trainait dans mon "/lib". J'ai d\xE9cid\xE9 d'appeller les + choses par leur nom, afin d'\xE9viter les confusions. + o Rien ne vous emp\xEAche de renommer la dll, si vous avez besoin + d'utiliser des programmes Glut que vous ne pouvez pas recompiler. + + * La biblioth\xE8que dynamique est g\xE9n\xE9r\xE9e \xE0 partir de la dll. + o Par souci de concision, j'ai utilis\xE9 awk. Il g\xE9n\xE8re le fichier + d'exports utilis\xE9 par dlltool. + o La seule chose notable est la s\xE9lection des fonctions dont le nom + commence par _glut, afin d'\xE9viter d'inclure dans la librairie + dynamique des fonctions sans rapport avec freeglut. + o ensuite, on utilise dlltool de fa\xE7on tr\xE8s classique. + +nm $(libname).dll | awk 'BEGIN { print "EXPORTS" } /T _glut/ {sub( /^.*T _/, "\t"); print}' > $(libname).def +dlltool --dllname $(libname).dll --input-def $(libname).def --output-lib lib$(libname)dll.a + + + + +Installation + + * Copiez libfreeglut.a, libfreeglutdll.a dans le r\xE9pertoire /lib de Cygwin. + * Copiez freglut.dll dans le system32 de Windows (ce qui est pratique, mais + pas propre!). + * Copiez les fichiers headers de Freeglut (/include/gl) dans /usr/include/Gl + de Cygwin. + * Copiez les fichiers headers (toujours /include/gl) dans + /usr/include/mingw/Gl : ceci sert aux compilations avec le flag + -mno-cygwin, qui utilise alors les includes de mingw. + o Vous aurez \xE9ventuellement besoin d'\xE9craser d'anciens fichiers + include, correspondants \xE0 Glut, si vous l'avez install\xE9 avec Cygwin. + + +Utilisation de la librairie + + * Nous allons tester avec le programme shapes, pr\xE9sent dans + progs/demos/shapes + o -mno-cygwin sert \xE0 forcer l'utilisation de Mingw sans la grosse + d\xE9pendance cygwin1.dll. + o -mwindows sert uniquement \xE0 enlever l'horrible fen\xEAtre shell (tr\xE8s + utile pour la mise au point, par contre). + o -L. (notez le point apr\xE8s le "L") : j'ai laiss\xE9 libfreeglut.a, + libfreeglutdll.a et freeglut.dll dans le r\xE9pertoire de test, le + temps des tests justement. + + +Compilation en librairie statique freeglut, sans cygwin + + * Toute l'astuce r\xE9side dans le define : -DFREEGLUT_STATIC + o Il sert \xE0 obtenir la bonne d\xE9coration des noms de fonctions dans les + imports de la lib Freeglut. + o Vous pouvez essayer sans et prendre un \xE9diteur hexa pour voir les + diff\xE9rences dans l'objet. + * attention \xE0 l'ordre des biblioth\xE8ques : -lfreeglut (statique) doit se + trouver avant la d\xE9claration des biblioth\xE8ques dynamiques. + + * gcc shapes.c -L. -lfreeglut -lopengl32 -lwinmm -lgdi32 -mno-cygwin + -mwindows -DFREEGLUT_STATIC + + +Compilation avec dll freeglut, sans cygwin + + * Pour le define, m\xEAme remarque que ci-dessus + * L'ordre des biblioth\xE8ques n'a plus d'importance. + + * gcc shapes.c -L. -lopengl32 -lwinmm -lgdi32 -lfreeglut -mno-cygwin + -DFREEGLUT_STATIC + + +Compilation avec dll freeglut, avec Cygwin + + * Cet exemple est donn\xE9 uniquement pour r\xE9f\xE9rence, le th\xE8me de ce billet \xE9tant de se d\xE9barrasser de Cygwin. + o Disons que \xE7a peut servir pendant la mise au point (et encore). + + * gcc shapes.c -L. -lopengl32 -lwinmm -lgdi32 -lfreeglut + + + +O\xF9 sont les dooooocs ? + + * Freeglut est livr\xE9 avec sa documentation, plus tr\xE8s \xE0 jour. + o Il semble qu'il y ait un probl\xE8me avec la doc Glut originale. Non + seulement elle ne correspond pas forc\xE9ment au fonctionnement de + Freeglut, mais de plus, son auteur (Mark Kilgard) l'a copyright\xE9. Sa + distribution est donc difficile. + + * Jocelyn Fr\xE9chot a entrepris une mise \xE0 niveau des docs pour la version + 2.6.0. On peut les trouver sur son site pour l'instant: + o http://jocelyn.frechot.free.fr/freeglut/ + + +Quelque chose a surv\xE9cu ... + + * J'ai \xE9galement test\xE9 la recompilation des d\xE9mos de la lib Glut originelle + (paix \xE0 ses cendres). + o Rien de particulier \xE0 signaler. + + * Merci \xE0 tous les mainteneurs courageux de Freeglut, qu'on croyait mort, + mais qui bouge encore. Added: trunk/freeglut/freeglut/README.cygwin_mingw =================================================================== --- trunk/freeglut/freeglut/README.cygwin_mingw (rev 0) +++ trunk/freeglut/freeglut/README.cygwin_mingw 2009-07-12 14:07:19 UTC (rev 829) @@ -0,0 +1,212 @@ +Glut then! + +By Jean-Seb on Friday July 10, 2009, 00:18 +Translated by Babelfish with a scrub from John F. Fay. For points of confusion +please refer to the original French version. + +Freeglut is an open-source evolution of GLUT. +Under Windows, one can use it with Cygwin. +Easy? Yes, if one agrees to distribute "cygwin1.dll". +Let us help freeglut gain its independence ! +m.\xE0.j 10/7/2009: generation of a library for linking without the DLL. + + +Recovery of the sources + + * Download the sources of version 2.6.0 which integrates recent changes. + * For the moment, it is a RC (Release Candidate), but the final version + should not delay. + * The use of the 2.6 is preferable with the 2.4-stable branch because many + bugs have been corrected. + * You will find the sources on the site of Freeglut: + o http://freeglut.sourceforge.net/ + + +Objectives and preparation +Objectives + + * We will create a DLL related to Cygwin, and an independent static library + * We will also create a dynamic library, allowing linking with the DLL. + + +List of generated files + + * freeglut.dll: a traditional DLL for the dynamic linkage. + * libfreeglut.a: the static library. The final program is autonomous (at + least for OpenGL). + * libfreeglutdll.a: the dynamic library. The final program needs + freeglut.dll. + + +Preparation + + * Extract the files from the freeglut archive. + * Go in the directory src (located at the root of the Freeglut directory), + and create a "Gl" sub-directory + o In this sub-directory, copy the files of the directory "include/Gl" + + * Why is it necessary to create a "Gl" directory for compilation? + o I needed it to simplify things during my tests. + o If not you can create the repertories directly, and copy the files + as indicated in the point installation (see below). + + * Do a little housekeeping in /lib: + o Erase all the references to the glut, so as not to conflict with the + linking. + o This stage is optional, you can also choose to do the housekeeping + only after a successful compilation of Freeglut. + o In your enthusiasm to clean things up, be careful not to erase the + library glu32.lib (not to be confused with glut32.lib). + + +Compilation + + * Forget the "./configure, make, make install" triptych. + o It does not go at all with Cygwin. + + * Here Makefile which will make the deal: + +#Makefile for Freeglut 2.6.0-rc and Cygwin +#To place in the directory \x93src\x94 + +sources=$ (wildcard *.c) +objs=$ (sources: .c=.o) +libname=freeglut + + +CFLAGS=-O2 - DTARGET_HOST_MS_WINDOWS - DX_DISPLAY_MISSING - DFREEGLUT_STATIC - I./ +LDFLAGS=-lopengl32 - lgdi32 - lwinmm + +nocyg=-mno-cygwin - mwindows + +all: $ (objs) + #construction DLL related to cygwin1.dll + GCC $ (nocyg) $ (objs) - shared $ (LDFLAGS) - O $ (libname) .dll + Nm $ (libname) .dll | awk \x93BEGIN {print \x93EXPORTS\x94} /T _glut/{sub (/^.*T _/,\x94 \ T "); print}\x94 > $ (libname) .def + dlltool --dllname $ (libname) .dll --input-def $ (libname) .def --output-lib lib$ (libname) dll.a + + #construction static library independent of cygwin + rear Cr lib$ (libname) .a $ (objs) + #pas inevitably obligatory (creation of an index to accelerate the accesses) + ranlib lib$ (libname) .a + +%.o: %.c + GCC $ (nocyg) - C $ (CFLAGS) $< + +clean: + rm - F *.o $ (libname) .dll $ (libname) .def lib$ (libname) dll.a lib$ (libname) .a + + + + +Some remarks on the makefile + + * This makefile creates a DLL, a static library (a file, in other words) and + the dynamic library which will allow the use of the DLL. + + * Do not try to strip the static library! You may not be able to compile + applications with static library any more. + o On the other hand, you can strip the final executable obtained after + compiling your application. + + * I chose to call the DLL and the libraries by their "true names": + freeglut.dll libfreeglutdll.a and libfreeglut.a. + o Script configures recreated (for reasons of compatibility with the + old GLUT library) glut.dll and libglut.a. + o During the my tests, I had conflicts with an authentic "glut" which + trailed in my "/lib". I decided to call the things by their name, in + order to avoid confusions. + o Nothing prevents you from renaming the DLL, if you need to use GLUT + programs which you cannot recompile. + + * The dynamic library is generated starting from the DLL. + o For reasons of brevity, I used awk. It generates the export file + used by dlltool. + o The only notable thing is the selection of the functions whose name + starts with _glut, in order to avoid including in the dynamic + library the functions that are not related to freeglut. + o then, one uses dlltool in a very traditional way. + +Nm $ (libname) .dll | awk \x93BEGIN {print \x93EXPORTS\x94} /T _glut/{sub (/^.*T _/,\x94 \ T "); print}\x94 > $ (libname) .def +dlltool --dllname $ (libname) .dll --input-def $ (libname) .def --output-lib lib$ (libname) dll.a + + + + +Installation + + * Copy libfreeglut.a, libfreeglutdll.a into the Cygwin directory /lib. + * Copy freglut.dll in the system32 of Windows (this is practical, but not + clean!). + * Copy the files headers of Freeglut (/include/gl) into the Cygwin directory + /usr/include/Gl. + * Copy the files headers (always /include/gl) into /usr/include/mingw/Gl: + this is used for compilations with the flag - mno-cygwin, which uses the + includes in mingw. + o You may need to erase the old GLUT include files if you installed it + with Cygwin. + + +Use of the library + + * We will test with the program shapes, found in progs/demonstrations/shapes + o -mno-cygwin is used to force the use of Mingw without the large + dependence cygwin1.dll. + o -mwindows is only used to remove the horrible Shell window (very + useful for the settling, on the other hand). + o -L. (note the period after the "L"): I left libfreeglut.a, + libfreeglutdll.a and freeglut.dll in the test directory, at the time + of the tests. + + +Compilation of the static freeglut library, without cygwin + + * All the simplicity lies in the define: -DFREEGLUT_STATIC + o It serves to obtain good decoration of the function names in the + imports of the lib Freeglut. + o You can test without and use a hex editor to see the differences + in the objects. + * attention with the order of the libraries: -lfreeglut (static) must be + before the declaration of the dynamic libraries. + + * gcc shapes.c -L. -lfreeglut -lopengl32 -lwinmm -lgdi32 -mno-cygwin -mwindows -DFREEGLUT_STATIC + + +Compilation with DLL freeglut, without cygwin + + * For the define, see the notices above + * The order of the libraries is no longer important. + + * gcc shapes.c -L. -lopengl32 -lwinmm -lgdi32 -lfreeglut -mno-cygwin -DFREEGLUT_STATIC + + +Compilation with DLL freeglut, Cygwin + + * This example is given only for reference, the topic of this ticket being + to get rid of Cygwin. + o Let us say that can be used to make the point (and later). + + * gcc shapes.c -L. -lopengl32 -lwinmm -lgdi32 -lfreeglut + + + +Where are the dooooocs? + + * Freeglut is delivered with its documentation, more very up to date. + o It seems that there is a problem with the original GLUT + documentation. Not only it does not correspond completely to the + operation of Freeglut, but moreover, its author (Mark Kilgard) + copyrighted it. Its distribution is thus difficult. + + * Jocelyn Fr\xE9chot undertook a levelling of the docs for version 2.6.0. One can find them on his site for the moment: + o http://jocelyn.frechot.free.fr/freeglut/ + + +Something survived\x85 + + * I also tested the recompiling of the demonstrations of the original lib + GLUT (peace with its ashes). + o Nothing in particular to be announced. + + * Thank you with all the courageous maintainers for Freeglut, that one + believed dead, but which still move. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2009-08-10 18:40:07
|
Revision: 832 http://freeglut.svn.sourceforge.net/freeglut/?rev=832&view=rev Author: spanne Date: 2009-08-10 18:39:58 +0000 (Mon, 10 Aug 2009) Log Message: ----------- Added support for sRGB framebuffers via the GLX_ARB_framebuffer_sRGB / WGL_ARB_framebuffer_sRGB extensions. Added support for context profiles via the new parts of the GLX_ARB_create_context / WGL_ARB_create_context extensions. Modified Paths: -------------- trunk/freeglut/freeglut/ChangeLog trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/include/GL/freeglut_std.h trunk/freeglut/freeglut/src/freeglut_ext.c trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_state.c trunk/freeglut/freeglut/src/freeglut_window.c trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/ChangeLog =================================================================== --- trunk/freeglut/freeglut/ChangeLog 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/ChangeLog 2009-08-10 18:39:58 UTC (rev 832) @@ -1,3 +1,12 @@ +2009-08-10 Sven Panne <sve...@ae...> + + * include/GL/freeglut_ext.h,include/GL/freeglut_std.h,src/freeglut_ext.c, + src/freeglut_init.c,src/freeglut_internal.h,src/freeglut_state.c, + src/freeglut_window.c,src/freeglutdll.def: Added support for sRGB + framebuffers via the GLX_ARB_framebuffer_sRGB / WGL_ARB_framebuffer_sRGB + extensions. Added support for context profiles via the new parts of the + GLX_ARB_create_context / WGL_ARB_create_context extensions. + 2009-06-11 Paul Blew <pau...@no...> * replaced broken IDE based OpenWatcom build with a makefile based one Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2009-08-10 18:39:58 UTC (rev 832) @@ -95,6 +95,7 @@ #define GLUT_INIT_MAJOR_VERSION 0x0200 #define GLUT_INIT_MINOR_VERSION 0x0201 #define GLUT_INIT_FLAGS 0x0202 +#define GLUT_INIT_PROFILE 0x0203 /* * Flags for glutInitContextFlags, see freeglut_init.c @@ -102,7 +103,14 @@ #define GLUT_DEBUG 0x0001 #define GLUT_FORWARD_COMPATIBLE 0x0002 + /* + * Flags for glutInitContextProfile, see freeglut_init.c + */ +#define GLUT_CORE_PROFILE 0x0001 +#define GLUT_COMPATIBILITY_PROFILE 0x0002 + +/* * Process loop function, see freeglut_main.c */ FGAPI void FGAPIENTRY glutMainLoopEvent( void ); @@ -186,7 +194,15 @@ */ FGAPI void FGAPIENTRY glutInitContextVersion( int majorVersion, int minorVersion ); FGAPI void FGAPIENTRY glutInitContextFlags( int flags ); +FGAPI void FGAPIENTRY glutInitContextProfile( int profile ); +/* + * GLUT API macro definitions -- the display mode definitions + */ +#define GLUT_CAPTIONLESS 0x0400 +#define GLUT_BORDERLESS 0x0800 +#define GLUT_SRGB 0x1000 + #ifdef __cplusplus } #endif Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2009-08-10 18:39:58 UTC (rev 832) @@ -171,8 +171,6 @@ #define GLUT_MULTISAMPLE 0x0080 #define GLUT_STEREO 0x0100 #define GLUT_LUMINANCE 0x0200 -#define GLUT_CAPTIONLESS 0x0400 -#define GLUT_BORDERLESS 0x0800 /* * GLUT API macro definitions -- windows and menu related definitions Modified: trunk/freeglut/freeglut/src/freeglut_ext.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_ext.c 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/src/freeglut_ext.c 2009-08-10 18:39:58 UTC (rev 832) @@ -195,6 +195,7 @@ CHECK_NAME(glutJoystickGetCenter); CHECK_NAME(glutInitContextVersion); CHECK_NAME(glutInitContextFlags); + CHECK_NAME(glutInitContextProfile); #undef CHECK_NAME return NULL; Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2009-08-10 18:39:58 UTC (rev 832) @@ -89,7 +89,8 @@ 4, /* SampleNumber */ 1, /* MajorVersion */ 0, /* MajorVersion */ - 0 /* ContextFlags */ + 0, /* ContextFlags */ + 0 /* ContextProfile */ }; @@ -425,6 +426,7 @@ fgState.MajorVersion = 1; fgState.MinorVersion = 0; fgState.ContextFlags = 0; + fgState.ContextProfile = 0; fgState.Initialised = GL_FALSE; @@ -1153,4 +1155,10 @@ fgState.ContextFlags = flags; } +void FGAPIENTRY glutInitContextProfile( int profile ) +{ + /* We will make use of this value when creating a new OpenGL context... */ + fgState.ContextProfile = profile; +} + /*** END OF FILE ***/ Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2009-08-10 18:39:58 UTC (rev 832) @@ -324,6 +324,7 @@ int MajorVersion; /* Major OpenGL context version */ int MinorVersion; /* Minor OpenGL context version */ int ContextFlags; /* OpenGL context flags */ + int ContextProfile; /* OpenGL context profile */ }; /* The structure used by display initialization in freeglut_init.c */ Modified: trunk/freeglut/freeglut/src/freeglut_state.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_state.c 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/src/freeglut_state.c 2009-08-10 18:39:58 UTC (rev 832) @@ -206,6 +206,7 @@ case GLUT_INIT_MAJOR_VERSION: return fgState.MajorVersion ; case GLUT_INIT_MINOR_VERSION: return fgState.MinorVersion ; case GLUT_INIT_FLAGS: return fgState.ContextFlags ; + case GLUT_INIT_PROFILE: return fgState.ContextProfile ; #if TARGET_HOST_POSIX_X11 /* Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2009-08-10 18:39:58 UTC (rev 832) @@ -51,6 +51,10 @@ #endif /* defined(_WIN32_WCE) */ +/* pushing attribute/value pairs into an array */ +#define ATTRIB(a) attributes[where++]=(a) +#define ATTRIB_VAL(a,v) {ATTRIB(a); ATTRIB(v);} + /* * TODO BEFORE THE STABLE RELEASE: * @@ -76,89 +80,121 @@ /* -- PRIVATE FUNCTIONS ---------------------------------------------------- */ +static int fghIsLegacyContextVersionRequested( void ) +{ + return fgState.MajorVersion == 1 && fgState.MinorVersion == 0; +} + +static int fghIsLegacyContextRequested( void ) +{ + return fghIsLegacyContextVersionRequested() && + fgState.ContextFlags == 0 && + fgState.ContextProfile == 0; +} + +static int fghNumberOfAuxBuffersRequested( void ) +{ + if ( fgState.DisplayMode & GLUT_AUX4 ) { + return 4; + } + if ( fgState.DisplayMode & GLUT_AUX3 ) { + return 3; + } + if ( fgState.DisplayMode & GLUT_AUX2 ) { + return 2; + } + if ( fgState.DisplayMode & GLUT_AUX1 ) { /* NOTE: Same as GLUT_AUX! */ + return fgState.AuxiliaryBufferNumber; + } + return 0; +} + +static int fghMapBit( int mask, int from, int to ) +{ + return ( mask & from ) ? to : 0; + +} + +static void fghContextCreationError( void ) +{ + fgError( "Unable to create OpenGL %d.%d context (flags %x, profile %x)", + fgState.MajorVersion, fgState.MinorVersion, fgState.ContextFlags, + fgState.ContextProfile ); +} + /* * Chooses a visual basing on the current display mode settings */ #if TARGET_HOST_POSIX_X11 +#ifndef GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 +#endif + GLXFBConfig* fgChooseFBConfig( void ) { - GLboolean wantIndexedMode = GL_FALSE; - int attributes[ 32 ]; - int where = 0; + GLboolean wantIndexedMode = GL_FALSE; + int attributes[ 100 ]; + int where = 0, numAuxBuffers; - /* First we have to process the display mode settings... */ -/* - * XXX Why is there a semi-colon in this #define? The code - * XXX that uses the macro seems to always add more semicolons... - */ -#define ATTRIB(a) attributes[where++]=a; -#define ATTRIB_VAL(a,v) {ATTRIB(a); ATTRIB(v);} + /* First we have to process the display mode settings... */ + if( fgState.DisplayMode & GLUT_INDEX ) { + ATTRIB_VAL( GLX_BUFFER_SIZE, 8 ); + /* Buffer size is selected later. */ - if( fgState.DisplayMode & GLUT_INDEX ) - { - ATTRIB_VAL( GLX_BUFFER_SIZE, 8 ); - /* Buffer size is selected later. */ - - ATTRIB_VAL( GLX_RENDER_TYPE, GLX_COLOR_INDEX_BIT ); - wantIndexedMode = GL_TRUE; + ATTRIB_VAL( GLX_RENDER_TYPE, GLX_COLOR_INDEX_BIT ); + wantIndexedMode = GL_TRUE; + } else { + ATTRIB_VAL( GLX_RED_SIZE, 1 ); + ATTRIB_VAL( GLX_GREEN_SIZE, 1 ); + ATTRIB_VAL( GLX_BLUE_SIZE, 1 ); + if( fgState.DisplayMode & GLUT_ALPHA ) { + ATTRIB_VAL( GLX_ALPHA_SIZE, 1 ); } - else - { - ATTRIB_VAL( GLX_RED_SIZE, 1 ); - ATTRIB_VAL( GLX_GREEN_SIZE, 1 ); - ATTRIB_VAL( GLX_BLUE_SIZE, 1 ); - if( fgState.DisplayMode & GLUT_ALPHA ) - ATTRIB_VAL( GLX_ALPHA_SIZE, 1 ); - } + } - if( fgState.DisplayMode & GLUT_DOUBLE ) - ATTRIB_VAL( GLX_DOUBLEBUFFER, True ); + if( fgState.DisplayMode & GLUT_DOUBLE ) { + ATTRIB_VAL( GLX_DOUBLEBUFFER, True ); + } - if( fgState.DisplayMode & GLUT_STEREO ) - ATTRIB_VAL( GLX_STEREO, True ); + if( fgState.DisplayMode & GLUT_STEREO ) { + ATTRIB_VAL( GLX_STEREO, True ); + } - if( fgState.DisplayMode & GLUT_DEPTH ) - ATTRIB_VAL( GLX_DEPTH_SIZE, 1 ); + if( fgState.DisplayMode & GLUT_DEPTH ) { + ATTRIB_VAL( GLX_DEPTH_SIZE, 1 ); + } - if( fgState.DisplayMode & GLUT_STENCIL ) - ATTRIB_VAL( GLX_STENCIL_SIZE, 1 ); + if( fgState.DisplayMode & GLUT_STENCIL ) { + ATTRIB_VAL( GLX_STENCIL_SIZE, 1 ); + } - if( fgState.DisplayMode & GLUT_ACCUM ) - { - ATTRIB_VAL( GLX_ACCUM_RED_SIZE, 1 ); - ATTRIB_VAL( GLX_ACCUM_GREEN_SIZE, 1 ); - ATTRIB_VAL( GLX_ACCUM_BLUE_SIZE, 1 ); - if( fgState.DisplayMode & GLUT_ALPHA ) - ATTRIB_VAL( GLX_ACCUM_ALPHA_SIZE, 1 ); + if( fgState.DisplayMode & GLUT_ACCUM ) { + ATTRIB_VAL( GLX_ACCUM_RED_SIZE, 1 ); + ATTRIB_VAL( GLX_ACCUM_GREEN_SIZE, 1 ); + ATTRIB_VAL( GLX_ACCUM_BLUE_SIZE, 1 ); + if( fgState.DisplayMode & GLUT_ALPHA ) { + ATTRIB_VAL( GLX_ACCUM_ALPHA_SIZE, 1 ); } + } - if( fgState.DisplayMode & GLUT_AUX4 ) - { - ATTRIB_VAL(GLX_AUX_BUFFERS, 4); - } - else if( fgState.DisplayMode & GLUT_AUX3 ) - { - ATTRIB_VAL(GLX_AUX_BUFFERS, 3); - } - else if( fgState.DisplayMode & GLUT_AUX2 ) - { - ATTRIB_VAL(GLX_AUX_BUFFERS, 2); - } - else if( fgState.DisplayMode & GLUT_AUX1 ) /* NOTE: Same as GLUT_AUX! */ - { - ATTRIB_VAL(GLX_AUX_BUFFERS, fgState.AuxiliaryBufferNumber); - } + numAuxBuffers = fghNumberOfAuxBuffersRequested(); + if ( numAuxBuffers > 0 ) { + ATTRIB_VAL( GLX_AUX_BUFFERS, numAuxBuffers ); + } - if (fgState.DisplayMode & GLUT_MULTISAMPLE) - { - ATTRIB_VAL(GLX_SAMPLE_BUFFERS, 1) - ATTRIB_VAL(GLX_SAMPLES, fgState.SampleNumber) - } + if( fgState.DisplayMode & GLUT_SRGB ) { + ATTRIB_VAL( GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB, True ); + } - /* Push a null at the end of the list */ - ATTRIB( None ); + if (fgState.DisplayMode & GLUT_MULTISAMPLE) { + ATTRIB_VAL(GLX_SAMPLE_BUFFERS, 1); + ATTRIB_VAL(GLX_SAMPLES, fgState.SampleNumber); + } + /* Push a terminator at the end of the list */ + ATTRIB( None ); + { GLXFBConfig * fbconfigArray; /* Array of FBConfigs */ GLXFBConfig * fbconfig; /* The FBConfig we want */ @@ -291,7 +327,10 @@ #define WGL_SAMPLE_BUFFERS_ARB 0x2041 #define WGL_SAMPLES_ARB 0x2042 +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 + #ifndef WGL_ARB_create_context #define WGL_ARB_create_context 1 #ifdef WGL_WGLEXT_PROTOTYPES @@ -299,54 +338,80 @@ #endif /* WGL_WGLEXT_PROTOTYPES */ typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList); -#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 -#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 #define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 + +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 + #define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 #endif +static void fghFillContextAttributes( int *attributes ) { + int where = 0, contextFlags, contextProfile; + if ( !fghIsLegacyContextVersionRequested() ) { + ATTRIB_VAL( WGL_CONTEXT_MAJOR_VERSION_ARB, fgState.MajorVersion ); + ATTRIB_VAL( WGL_CONTEXT_MINOR_VERSION_ARB, fgState.MinorVersion ); + } + + contextFlags = + fghMapBit( fgState.ContextFlags, GLUT_DEBUG, WGL_CONTEXT_DEBUG_BIT_ARB ) | + fghMapBit( fgState.ContextFlags, GLUT_FORWARD_COMPATIBLE, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB ); + if ( contextFlags != 0 ) { + ATTRIB_VAL( WGL_CONTEXT_FLAGS_ARB, contextFlags ); + } + + contextProfile = + fghMapBit( fgState.ContextProfile, GLUT_CORE_PROFILE, WGL_CONTEXT_CORE_PROFILE_BIT_ARB ) | + fghMapBit( fgState.ContextProfile, GLUT_COMPATIBILITY_PROFILE, WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB ); + if ( contextProfile != 0 ) { + ATTRIB_VAL( WGL_CONTEXT_PROFILE_MASK_ARB, contextProfile ); + } + + ATTRIB( 0 ); +} + +static int fghIsExtensionSupported( HDC hdc, const char *extension ) { + const char *pWglExtString; + PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetEntensionsStringARB = + (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB"); + if ( wglGetEntensionsStringARB == NULL ) + { + return FALSE; + } + pWglExtString = wglGetEntensionsStringARB( hdc ); + return ( pWglExtString != NULL ) && ( strstr(pWglExtString, extension) != NULL ); +} + void fgNewWGLCreateContext( SFG_Window* window ) { - PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetEntensionsStringARB; HGLRC context; - int attribs[7]; + int attributes[9]; PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB; - const char * pWglExtString; /* If nothing fancy has been required, leave the context as it is */ - if ( fgState.MajorVersion == 1 && fgState.MinorVersion == 0 && fgState.ContextFlags == 0 ) + if ( fghIsLegacyContextRequested() ) { return; } - wglMakeCurrent( window->Window.Device, - window->Window.Context ); + wglMakeCurrent( window->Window.Device, window->Window.Context ); - wglGetEntensionsStringARB=(PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB"); - if ( wglGetEntensionsStringARB == NULL ) + if ( !fghIsExtensionSupported( window->Window.Device, "WGL_ARB_create_context" ) ) { return; } - pWglExtString=wglGetEntensionsStringARB(window->Window.Device); - if (( pWglExtString == NULL ) || ( strstr(pWglExtString, "WGL_ARB_create_context") == NULL )) - { - return; - } - /* new context creation */ - attribs[0] = WGL_CONTEXT_MAJOR_VERSION_ARB; - attribs[1] = fgState.MajorVersion; - attribs[2] = WGL_CONTEXT_MINOR_VERSION_ARB; - attribs[3] = fgState.MinorVersion; - attribs[4] = WGL_CONTEXT_FLAGS_ARB; - attribs[5] = ((fgState.ContextFlags & GLUT_DEBUG) ? WGL_CONTEXT_DEBUG_BIT_ARB : 0) | - ((fgState.ContextFlags & GLUT_FORWARD_COMPATIBLE) ? WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB : 0); - attribs[6] = 0; + fghFillContextAttributes( attributes ); wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC) wglGetProcAddress( "wglCreateContextAttribsARB" ); if ( wglCreateContextAttribsARB == NULL ) @@ -354,11 +419,10 @@ fgError( "wglCreateContextAttribsARB not found" ); } - context = wglCreateContextAttribsARB( window->Window.Device, 0, attribs ); + context = wglCreateContextAttribsARB( window->Window.Device, 0, attributes ); if ( context == NULL ) { - fgError( "Unable to create OpenGL %d.%d context (flags %x)", - fgState.MajorVersion, fgState.MinorVersion, fgState.ContextFlags ); + fghContextCreationError(); } wglMakeCurrent( NULL, NULL ); @@ -366,96 +430,108 @@ window->Window.Context = context; } +#if !defined(_WIN32_WCE) -GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, - unsigned char layer_type ) +static void fghFillPFD( PIXELFORMATDESCRIPTOR *ppfd, HDC hdc, unsigned char layer_type ) { -#if defined(_WIN32_WCE) - return GL_TRUE; -#else - PIXELFORMATDESCRIPTOR* ppfd, pfd; - int flags, pixelformat; - - freeglut_return_val_if_fail( window != NULL, 0 ); - flags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - if( fgState.DisplayMode & GLUT_DOUBLE ) + int flags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; + if ( fgState.DisplayMode & GLUT_DOUBLE ) { flags |= PFD_DOUBLEBUFFER; + } + if ( fgState.DisplayMode & GLUT_STEREO ) { + flags |= PFD_STEREO; + } - if( fgState.DisplayMode & GLUT_STEREO ) - flags |= PFD_STEREO; - #if defined(_MSC_VER) #pragma message( "fgSetupPixelFormat(): there is still some work to do here!" ) #endif - /* Specify which pixel format do we opt for... */ - pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); - pfd.nVersion = 1; - pfd.dwFlags = flags; + /* Specify which pixel format do we opt for... */ + ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR); + ppfd->nVersion = 1; + ppfd->dwFlags = flags; - if( fgState.DisplayMode & GLUT_INDEX ) - { - pfd.iPixelType = PFD_TYPE_COLORINDEX; - pfd.cRedBits = 0; - pfd.cGreenBits = 0; - pfd.cBlueBits = 0; - pfd.cAlphaBits = 0; - } - else - { - pfd.iPixelType = PFD_TYPE_RGBA; - pfd.cRedBits = 8; - pfd.cGreenBits = 8; - pfd.cBlueBits = 8; - if ( fgState.DisplayMode & GLUT_ALPHA ) - pfd.cAlphaBits = 8; - else - pfd.cAlphaBits = 0; - } + if( fgState.DisplayMode & GLUT_INDEX ) { + ppfd->iPixelType = PFD_TYPE_COLORINDEX; + ppfd->cRedBits = 0; + ppfd->cGreenBits = 0; + ppfd->cBlueBits = 0; + ppfd->cAlphaBits = 0; + } else { + ppfd->iPixelType = PFD_TYPE_RGBA; + ppfd->cRedBits = 8; + ppfd->cGreenBits = 8; + ppfd->cBlueBits = 8; + ppfd->cAlphaBits = ( fgState.DisplayMode & GLUT_ALPHA ) ? 8 : 0; + } - pfd.cColorBits = 24; - pfd.cRedShift = 0; - pfd.cGreenShift = 0; - pfd.cBlueShift = 0; - pfd.cAlphaShift = 0; - pfd.cAccumBits = 0; - pfd.cAccumRedBits = 0; - pfd.cAccumGreenBits = 0; - pfd.cAccumBlueBits = 0; - pfd.cAccumAlphaBits = 0; -#if 0 - pfd.cDepthBits = 32; - pfd.cStencilBits = 0; -#else - pfd.cDepthBits = 24; - pfd.cStencilBits = 8; + ppfd->cColorBits = 24; + ppfd->cRedShift = 0; + ppfd->cGreenShift = 0; + ppfd->cBlueShift = 0; + ppfd->cAlphaShift = 0; + ppfd->cAccumBits = 0; + ppfd->cAccumRedBits = 0; + ppfd->cAccumGreenBits = 0; + ppfd->cAccumBlueBits = 0; + ppfd->cAccumAlphaBits = 0; + + /* Hmmm, or 32/0 instead of 24/8? */ + ppfd->cDepthBits = 24; + ppfd->cStencilBits = 8; + + ppfd->cAuxBuffers = fghNumberOfAuxBuffersRequested(); + ppfd->iLayerType = layer_type; + ppfd->bReserved = 0; + ppfd->dwLayerMask = 0; + ppfd->dwVisibleMask = 0; + ppfd->dwDamageMask = 0; + + ppfd->cColorBits = (BYTE) GetDeviceCaps( hdc, BITSPIXEL ); +} + +static void fghFillPixelFormatAttributes( int *attributes, const PIXELFORMATDESCRIPTOR *ppfd ) +{ + int where = 0; + + ATTRIB_VAL( WGL_DRAW_TO_WINDOW_ARB, GL_TRUE ); + ATTRIB_VAL( WGL_SUPPORT_OPENGL_ARB, GL_TRUE ); + ATTRIB_VAL( WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB ); + + ATTRIB_VAL( WGL_COLOR_BITS_ARB, ppfd->cColorBits ); + ATTRIB_VAL( WGL_ALPHA_BITS_ARB, ppfd->cAlphaBits ); + ATTRIB_VAL( WGL_DEPTH_BITS_ARB, ppfd->cDepthBits ); + ATTRIB_VAL( WGL_STENCIL_BITS_ARB, ppfd->cStencilBits ); + + ATTRIB_VAL( WGL_DOUBLE_BUFFER_ARB, ( fgState.DisplayMode & GLUT_DOUBLE ) != 0 ); + + if ( fgState.DisplayMode & GLUT_SRGB ) { + ATTRIB_VAL( WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB, TRUE ); + } + + ATTRIB_VAL( WGL_SAMPLE_BUFFERS_ARB, GL_TRUE ); + ATTRIB_VAL( WGL_SAMPLES_ARB, fgState.SampleNumber ); + ATTRIB( 0 ); +} #endif - if( fgState.DisplayMode & GLUT_AUX4 ) - pfd.cAuxBuffers = 4; - else if( fgState.DisplayMode & GLUT_AUX3 ) - pfd.cAuxBuffers = 3; - else if( fgState.DisplayMode & GLUT_AUX2 ) - pfd.cAuxBuffers = 2; - else if( fgState.DisplayMode & GLUT_AUX1 ) /* NOTE: Same as GLUT_AUX! */ - pfd.cAuxBuffers = fgState.AuxiliaryBufferNumber; - else - pfd.cAuxBuffers = 0; - pfd.iLayerType = layer_type; - pfd.bReserved = 0; - pfd.dwLayerMask = 0; - pfd.dwVisibleMask = 0; - pfd.dwDamageMask = 0; +GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, + unsigned char layer_type ) +{ +#if defined(_WIN32_WCE) + return GL_TRUE; +#else + PIXELFORMATDESCRIPTOR pfd; + PIXELFORMATDESCRIPTOR* ppfd = &pfd; + int pixelformat; - pfd.cColorBits = (BYTE) GetDeviceCaps( window->Window.Device, BITSPIXEL ); - ppfd = &pfd; - + fghFillPFD( ppfd, window->Window.Device, layer_type ); pixelformat = ChoosePixelFormat( window->Window.Device, ppfd ); - /* windows hack for multismapling */ - if (fgState.DisplayMode&GLUT_MULTISAMPLE) + /* windows hack for multismapling/sRGB */ + if ( ( fgState.DisplayMode & GLUT_MULTISAMPLE ) || + ( fgState.DisplayMode & GLUT_SRGB ) ) { - PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetEntensionsStringARB=NULL; HGLRC rc, rc_before=wglGetCurrentContext(); HWND hWnd; HDC hDC, hDC_before=wglGetCurrentDC(); @@ -476,60 +552,35 @@ rc = wglCreateContext( hDC ); wglMakeCurrent(hDC, rc); - wglGetEntensionsStringARB=(PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB"); - if (wglGetEntensionsStringARB) + if ( fghIsExtensionSupported( hDC, "WGL_ARB_multisample" ) ) { - const char * pWglExtString=wglGetEntensionsStringARB(hDC); - if (pWglExtString) + PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARBProc = + (PFNWGLCHOOSEPIXELFORMATARBPROC) wglGetProcAddress("wglChoosePixelFormatARB"); + if ( wglChoosePixelFormatARBProc ) { - if (strstr(pWglExtString, "WGL_ARB_multisample")) + int attributes[100]; + int iPixelFormat; + BOOL bValid; + float fAttributes[] = { 0, 0 }; + UINT numFormats; + fghFillPixelFormatAttributes( attributes, ppfd ); + bValid = wglChoosePixelFormatARBProc(window->Window.Device, attributes, fAttributes, 1, &iPixelFormat, &numFormats); + + if ( bValid && numFormats > 0 ) { - int pAttributes[100]; - int iCounter=0; - int iPixelFormat; - BOOL bValid; - float fAttributes[] = {0,0}; - UINT numFormats; - PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARBProc=NULL; - - wglChoosePixelFormatARBProc=(PFNWGLCHOOSEPIXELFORMATARBPROC)wglGetProcAddress("wglChoosePixelFormatARB"); - if ( wglChoosePixelFormatARBProc ) - { - pAttributes[iCounter++]=WGL_DRAW_TO_WINDOW_ARB; pAttributes[iCounter++]=GL_TRUE; - pAttributes[iCounter++]=WGL_SUPPORT_OPENGL_ARB; pAttributes[iCounter++]=GL_TRUE; - pAttributes[iCounter++]=WGL_ACCELERATION_ARB; pAttributes[iCounter++]=WGL_FULL_ACCELERATION_ARB; - - pAttributes[iCounter++]=WGL_COLOR_BITS_ARB; pAttributes[iCounter++]=pfd.cColorBits ; - pAttributes[iCounter++]=WGL_ALPHA_BITS_ARB; pAttributes[iCounter++]=pfd.cAlphaBits; - pAttributes[iCounter++]=WGL_DEPTH_BITS_ARB; pAttributes[iCounter++]=pfd.cDepthBits; - pAttributes[iCounter++]=WGL_STENCIL_BITS_ARB; pAttributes[iCounter++]=pfd.cStencilBits; - - pAttributes[iCounter++]=WGL_DOUBLE_BUFFER_ARB; pAttributes[iCounter++]=(fgState.DisplayMode & GLUT_DOUBLE)!=0; - pAttributes[iCounter++]=WGL_SAMPLE_BUFFERS_ARB; pAttributes[iCounter++]=GL_TRUE; - pAttributes[iCounter++]=WGL_SAMPLES_ARB; pAttributes[iCounter++]=fgState.SampleNumber; - pAttributes[iCounter++]=0; pAttributes[iCounter++]=0; /* terminator */ - - bValid = wglChoosePixelFormatARBProc(window->Window.Device,pAttributes,fAttributes,1,&iPixelFormat,&numFormats); - - if (bValid && numFormats>0) - pixelformat=iPixelFormat; - } + pixelformat = iPixelFormat; } - wglMakeCurrent( hDC_before, rc_before); - wglDeleteContext(rc); - ReleaseDC(hWnd, hDC); - DestroyWindow(hWnd); - UnregisterClass(_T("FREEGLUT_dummy"), fgDisplay.Instance); } } + + wglMakeCurrent( hDC_before, rc_before); + wglDeleteContext(rc); + ReleaseDC(hWnd, hDC); + DestroyWindow(hWnd); + UnregisterClass(_T("FREEGLUT_dummy"), fgDisplay.Instance); } - if( pixelformat == 0 ) - return GL_FALSE; - - if( checkOnly ) - return GL_TRUE; - return SetPixelFormat( window->Window.Device, pixelformat, ppfd ); + return ( pixelformat != 0 ) && ( checkOnly || SetPixelFormat( window->Window.Device, pixelformat, ppfd ) ); #endif /* defined(_WIN32_WCE) */ } #endif /* TARGET_HOST_MS_WINDOWS */ @@ -581,6 +632,10 @@ #define GLX_CONTEXT_FLAGS_ARB 0x2094 #endif +#ifndef GLX_CONTEXT_PROFILE_MASK_ARB +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#endif + #ifndef GLX_CONTEXT_DEBUG_BIT_ARB #define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 #endif @@ -589,6 +644,47 @@ #define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 #endif +#ifndef GLX_CONTEXT_CORE_PROFILE_BIT_ARB +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#endif + +#ifndef GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#endif + +#ifndef GLX_RGBA_FLOAT_TYPE +#define GLX_RGBA_FLOAT_TYPE 0x20B9 +#endif + +#ifndef GLX_RGBA_FLOAT_BIT +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#endif + +static void fghFillContextAttributes( int *attributes ) { + int where = 0, contextFlags, contextProfile; + + if ( !fghIsLegacyContextVersionRequested() ) { + ATTRIB_VAL( GLX_CONTEXT_MAJOR_VERSION_ARB, fgState.MajorVersion ); + ATTRIB_VAL( GLX_CONTEXT_MINOR_VERSION_ARB, fgState.MinorVersion ); + } + + contextFlags = + fghMapBit( fgState.ContextFlags, GLUT_DEBUG, GLX_CONTEXT_DEBUG_BIT_ARB ) | + fghMapBit( fgState.ContextFlags, GLUT_FORWARD_COMPATIBLE, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB ); + if ( contextFlags != 0 ) { + ATTRIB_VAL( GLX_CONTEXT_FLAGS_ARB, contextFlags ); + } + + contextProfile = + fghMapBit( fgState.ContextProfile, GLUT_CORE_PROFILE, GLX_CONTEXT_CORE_PROFILE_BIT_ARB ) | + fghMapBit( fgState.ContextProfile, GLUT_COMPATIBILITY_PROFILE, GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB ); + if ( contextProfile != 0 ) { + ATTRIB_VAL( GLX_CONTEXT_PROFILE_MASK_ARB, contextProfile ); + } + + ATTRIB( 0 ); +} + typedef GLXContext (*CreateContextAttribsProc)(Display *dpy, GLXFBConfig config, GLXContext share_list, Bool direct, const int *attrib_list); @@ -608,15 +704,15 @@ GLXContext context; /* new context creation */ - int attribs[7]; + int attributes[9]; CreateContextAttribsProc createContextAttribs; /* If nothing fancy has been required, simply use the old context creation GLX API entry */ - if ( fgState.MajorVersion == 1 && fgState.MinorVersion == 0 && fgState.ContextFlags == 0) + if ( fghIsLegacyContextRequested() ) { context = glXCreateNewContext( dpy, config, render_type, share_list, direct ); if ( context == NULL ) { - fgError( "could not create new OpenGL context" ); + fghContextCreationError(); } return context; } @@ -626,24 +722,16 @@ fgWarning( "color index mode is deprecated, using RGBA mode" ); } - attribs[0] = GLX_CONTEXT_MAJOR_VERSION_ARB; - attribs[1] = fgState.MajorVersion; - attribs[2] = GLX_CONTEXT_MINOR_VERSION_ARB; - attribs[3] = fgState.MinorVersion; - attribs[4] = GLX_CONTEXT_FLAGS_ARB; - attribs[5] = ((fgState.ContextFlags & GLUT_DEBUG) ? GLX_CONTEXT_DEBUG_BIT_ARB : 0) | - ((fgState.ContextFlags & GLUT_FORWARD_COMPATIBLE) ? GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB : 0); - attribs[6] = 0; + fghFillContextAttributes( attributes ); createContextAttribs = (CreateContextAttribsProc) fghGetProcAddress( "glXCreateContextAttribsARB" ); if ( createContextAttribs == NULL ) { fgError( "glXCreateContextAttribsARB not found" ); } - context = createContextAttribs( dpy, config, share_list, direct, attribs ); + context = createContextAttribs( dpy, config, share_list, direct, attributes ); if ( context == NULL ) { - fgError( "could not create new OpenGL %d.%d context (flags %x)", - fgState.MajorVersion, fgState.MinorVersion, fgState.ContextFlags ); + fghContextCreationError(); } return context; } Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2009-07-23 19:07:34 UTC (rev 831) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2009-08-10 18:39:58 UTC (rev 832) @@ -154,6 +154,7 @@ glutGetModeValues glutInitContextFlags glutInitContextVersion + glutInitContextProfile __glutInitWithExit __glutCreateWindowWithExit __glutCreateMenuWithExit This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-11-06 13:26:32
|
Revision: 837 http://freeglut.svn.sourceforge.net/freeglut/?rev=837&view=rev Author: fayjf Date: 2009-11-06 13:26:16 +0000 (Fri, 06 Nov 2009) Log Message: ----------- First attempt at adding John Tsiombikas' spaceball support for X11. It compiles under Windows but the demo program does not. See e-mail from John Tsiombikas dated 10/15/2009 9:43 AM. Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/progs/demos/Makefile.am trunk/freeglut/freeglut/progs/demos/demos.dsw trunk/freeglut/freeglut/src/Makefile.am trunk/freeglut/freeglut/src/freeglut_callbacks.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_main.c trunk/freeglut/freeglut/src/freeglut_state.c trunk/freeglut/freeglut/src/freeglut_window.c Added Paths: ----------- trunk/freeglut/freeglut/progs/demos/spaceball/ trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.dsp trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl trunk/freeglut/freeglut/src/freeglut_spaceball.c Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/configure.ac 2009-11-06 13:26:16 UTC (rev 837) @@ -95,5 +95,5 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) AC_OUTPUT Modified: trunk/freeglut/freeglut/progs/demos/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Makefile.am 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/progs/demos/Makefile.am 2009-11-06 13:26:16 UTC (rev 837) @@ -1,2 +1,2 @@ EXTRA_DIST = demos.dsw -SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 +SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball Modified: trunk/freeglut/freeglut/progs/demos/demos.dsw =================================================================== --- trunk/freeglut/freeglut/progs/demos/demos.dsw 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/progs/demos/demos.dsw 2009-11-06 13:26:16 UTC (rev 837) @@ -159,6 +159,18 @@ ############################################################################### +Project: "spaceball"=.\spaceball\spaceball.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + Global: Package=<5> Added: trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am (rev 0) +++ trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,6 @@ +EXTRA_DIST = spaceball.c vmath.c vmath.h vmath.inl + +noinst_PROGRAMS = spaceball +spaceball_SOURCES = spaceball.c vmath.c +spaceball_LDFLAGS = -export-dynamic ../../../src/lib@LIBRARY@.la +spaceball_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) \ No newline at end of file Added: trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c (rev 0) +++ trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,173 @@ +/* Spaceball demo + * + * Written by John Tsiombikas <nu...@me...> + * (converted from the libspnav cube example) + * + * Use the spaceball to move and rotate the colored cube. + * Pressing any button will reset the cube at its original location. + * + * Press escape or q to exit. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +#include <GL/freeglut.h> +#include "vmath.h" + +void draw_cube(void); + +/* callbacks */ +void disp(void); +void reshape(int x, int y); +void keyb(unsigned char key, int x, int y); +void sbmot(int x, int y, int z); /* spaceball translation */ +void sbrot(int x, int y, int z); /* spaceball rotation */ +void sbbut(int bn, int state); /* spaceball button */ + +vec3_t pos = {0, 0, -6}; +quat_t rot = {0, 0, 0, 1}; + +int main(int argc, char **argv) +{ + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); + glutCreateWindow("spaceball demo"); + + glutDisplayFunc(disp); + glutReshapeFunc(reshape); + glutKeyboardFunc(keyb); + glutSpaceballMotionFunc(sbmot); + glutSpaceballRotateFunc(sbrot); + glutSpaceballButtonFunc(sbbut); + + glEnable(GL_CULL_FACE); + + glutMainLoop(); + return 0; +} + +void disp(void) +{ + mat4_t xform; + + quat_to_mat(xform, rot); + + glClear(GL_COLOR_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(pos.x, pos.y, pos.z); + glMultTransposeMatrixf((float*)xform); + + draw_cube(); + + glutSwapBuffers(); +} + +void draw_cube(void) +{ + glBegin(GL_QUADS); + /* face +Z */ + glNormal3f(0, 0, 1); + glColor3f(1, 0, 0); + glVertex3f(-1, -1, 1); + glVertex3f(1, -1, 1); + glVertex3f(1, 1, 1); + glVertex3f(-1, 1, 1); + /* face +X */ + glNormal3f(1, 0, 0); + glColor3f(0, 1, 0); + glVertex3f(1, -1, 1); + glVertex3f(1, -1, -1); + glVertex3f(1, 1, -1); + glVertex3f(1, 1, 1); + /* face -Z */ + glNormal3f(0, 0, -1); + glColor3f(0, 0, 1); + glVertex3f(1, -1, -1); + glVertex3f(-1, -1, -1); + glVertex3f(-1, 1, -1); + glVertex3f(1, 1, -1); + /* face -X */ + glNormal3f(-1, 0, 0); + glColor3f(1, 1, 0); + glVertex3f(-1, -1, -1); + glVertex3f(-1, -1, 1); + glVertex3f(-1, 1, 1); + glVertex3f(-1, 1, -1); + /* face +Y */ + glNormal3f(0, 1, 0); + glColor3f(0, 1, 1); + glVertex3f(-1, 1, 1); + glVertex3f(1, 1, 1); + glVertex3f(1, 1, -1); + glVertex3f(-1, 1, -1); + /* face -Y */ + glNormal3f(0, -1, 0); + glColor3f(1, 0, 1); + glVertex3f(-1, -1, -1); + glVertex3f(1, -1, -1); + glVertex3f(1, -1, 1); + glVertex3f(-1, -1, 1); + glEnd(); +} + +/* 45deg fov */ +#define FOV (M_PI / 4.0) + +void reshape(int x, int y) +{ + float aspect = (float)x / (float)y; + float halfy = tan(FOV / 2.0); + float halfx = halfy * aspect; + + glViewport(0, 0, x, y); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-halfx, halfx, -halfy, halfy, 1.0, 1000.0); +} + +void keyb(unsigned char key, int x, int y) +{ + switch(key) { + case 'q': + case 'Q': + case 27: + exit(0); + + case ' ': + /* reset initial view */ + pos = v3_cons(0, 0, -6); + rot = quat_cons(1, 0, 0, 0); + glutPostRedisplay(); + + default: + break; + } +} + +void sbmot(int x, int y, int z) +{ + pos.x += x * 0.001; + pos.y += y * 0.001; + pos.z -= z * 0.001; + glutPostRedisplay(); +} + +void sbrot(int x, int y, int z) +{ + float axis_len = sqrt(x * x + y * y + z * z); + rot = quat_rotate(rot, axis_len * 0.001, -x / axis_len, -y / axis_len, z / axis_len); + glutPostRedisplay(); +} + +void sbbut(int bn, int state) +{ + if(state == GLUT_DOWN) { + pos = v3_cons(0, 0, -6); + rot = quat_cons(1, 0, 0, 0); + glutPostRedisplay(); + } +} Added: trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.dsp =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.dsp (rev 0) +++ trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.dsp 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,96 @@ +# Microsoft Developer Studio Project File - Name="spaceball" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=spaceball - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "spaceball.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "spaceball.mak" CFG="spaceball - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "spaceball - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "spaceball - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "spaceball - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "spaceball - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "spaceball - Win32 Release" +# Name "spaceball - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project Added: trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c (rev 0) +++ trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,16 @@ +#include <math.h> +#include "vmath.h" + +quat_t quat_rotate(quat_t q, float angle, float x, float y, float z) +{ + quat_t rq; + float half_angle = angle * 0.5; + float sin_half = sin(half_angle); + + rq.w = cos(half_angle); + rq.x = x * sin_half; + rq.y = y * sin_half; + rq.z = z * sin_half; + + return quat_mul(q, rq); +} Added: trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h (rev 0) +++ trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,31 @@ +#ifndef VMATH_H_ +#define VMATH_H_ + +typedef struct { float x, y, z; } vec3_t; +typedef struct { float x, y, z, w; } vec4_t; + +typedef vec4_t quat_t; + +typedef float mat4_t[4][4]; + +/* vector functions */ +static inline vec3_t v3_cons(float x, float y, float z); +static inline float v3_dot(vec3_t v1, vec3_t v2); + +/* quaternion functions */ +static inline quat_t quat_cons(float s, float x, float y, float z); +static inline vec3_t quat_vec(quat_t q); +static inline quat_t quat_mul(quat_t q1, quat_t q2); +static inline void quat_to_mat(mat4_t res, quat_t q); +quat_t quat_rotate(quat_t q, float angle, float x, float y, float z); + +/* matrix functions */ +static inline void m4_cons(mat4_t m, + float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44); + +#include "vmath.inl" + +#endif /* VMATH_H_ */ Added: trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl (rev 0) +++ trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,68 @@ +/* vector functions */ +static inline vec3_t v3_cons(float x, float y, float z) +{ + vec3_t res; + res.x = x; + res.y = y; + res.z = z; + return res; +} + +static inline vec3_t quat_vec(quat_t q) +{ + vec3_t v; + v.x = q.x; + v.y = q.y; + v.z = q.z; + return v; +} + +static inline float v3_dot(vec3_t v1, vec3_t v2) +{ + return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; +} + +/* quaternion functions */ +static inline quat_t quat_cons(float s, float x, float y, float z) +{ + quat_t q; + q.x = x; + q.y = y; + q.z = z; + q.w = s; + return q; +} + +static inline quat_t quat_mul(quat_t q1, quat_t q2) +{ + quat_t res; + vec3_t v1 = quat_vec(q1); + vec3_t v2 = quat_vec(q2); + + res.w = q1.w * q2.w - v3_dot(v1, v2); + res.x = v2.x * q1.w + v1.x * q2.w + (v1.y * v2.z - v1.z * v2.y); + res.y = v2.y * q1.w + v1.y * q2.w + (v1.z * v2.x - v1.x * v2.z); + res.z = v2.z * q1.w + v1.z * q2.w + (v1.x * v2.y - v1.y * v2.x); + return res; +} + +static inline void quat_to_mat(mat4_t res, quat_t q) +{ + m4_cons(res, 1.0 - 2.0 * q.y*q.y - 2.0 * q.z*q.z, 2.0 * q.x * q.y + 2.0 * q.w * q.z, 2.0 * q.z * q.x - 2.0 * q.w * q.y, 0, + 2.0 * q.x * q.y - 2.0 * q.w * q.z, 1.0 - 2.0 * q.x*q.x - 2.0 * q.z*q.z, 2.0 * q.y * q.z + 2.0 * q.w * q.x, 0, + 2.0 * q.z * q.x + 2.0 * q.w * q.y, 2.0 * q.y * q.z - 2.0 * q.w * q.x, 1.0 - 2.0 * q.x*q.x - 2.0 * q.y*q.y, 0, + 0, 0, 0, 1); +} + +/* matrix functions */ +static inline void m4_cons(mat4_t m, + float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44) +{ + m[0][0] = m11; m[0][1] = m12; m[0][2] = m13; m[0][3] = m14; + m[1][0] = m21; m[1][1] = m22; m[1][2] = m23; m[1][3] = m24; + m[2][0] = m31; m[2][1] = m32; m[2][2] = m33; m[2][3] = m34; + m[3][0] = m41; m[3][1] = m42; m[3][2] = m43; m[3][3] = m44; +} Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/src/Makefile.am 2009-11-06 13:26:16 UTC (rev 837) @@ -28,6 +28,7 @@ freeglut_geometry.c \ freeglut_init.c \ freeglut_input_devices.c \ + freeglut_spaceball.c \ freeglut_joystick.c \ freeglut_main.c \ freeglut_menu.c \ Modified: trunk/freeglut/freeglut/src/freeglut_callbacks.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_callbacks.c 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/src/freeglut_callbacks.c 2009-11-06 13:26:16 UTC (rev 837) @@ -301,6 +301,8 @@ void FGAPIENTRY glutSpaceballMotionFunc( void (* callback)( int, int, int ) ) { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSpaceballMotionFunc" ); + fgInitialiseSpaceball(); + SET_CALLBACK( SpaceMotion ); } @@ -310,6 +312,8 @@ void FGAPIENTRY glutSpaceballRotateFunc( void (* callback)( int, int, int ) ) { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSpaceballRotateFunc" ); + fgInitialiseSpaceball(); + SET_CALLBACK( SpaceRotation ); } @@ -319,6 +323,8 @@ void FGAPIENTRY glutSpaceballButtonFunc( void (* callback)( int, int ) ) { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSpaceballButtonFunc" ); + fgInitialiseSpaceball(); + SET_CALLBACK( SpaceButton ); } Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2009-11-06 13:26:16 UTC (rev 837) @@ -564,9 +564,9 @@ /* Presently ignored */ CB_Select, CB_OverlayDisplay, - CB_SpaceMotion, - CB_SpaceRotation, - CB_SpaceButton, + CB_SpaceMotion, /* presently implemented only on UNIX/X11 */ + CB_SpaceRotation, /* presently implemented only on UNIX/X11 */ + CB_SpaceButton, /* presently implemented only on UNIX/X11 */ CB_Dials, CB_ButtonBox, CB_TabletMotion, @@ -853,6 +853,19 @@ void fgInitialiseInputDevices( void ); void fgInputDeviceClose( void ); +/* spaceball device functions, defined in freeglut_spaceball.c */ +void fgInitialiseSpaceball( void ); +void fgSpaceballClose( void ); +void fgSpaceballSetWindow( SFG_Window *window ); + +int fgHasSpaceball( void ); +int fgSpaceballNumButtons( void ); + +#if TARGET_HOST_POSIX_X11 +int fgIsSpaceballXEvent( const XEvent *ev ); +void fgSpaceballHandleXEvent( const XEvent *ev ); +#endif + /* Setting the cursor for a given window */ void fgSetCursor ( SFG_Window *window, int cursorID ); Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2009-11-06 13:26:16 UTC (rev 837) @@ -980,6 +980,10 @@ switch( event.type ) { case ClientMessage: + if(fgIsSpaceballXEvent(&event)) { + fgSpaceballHandleXEvent(&event); + break; + } /* Destroy the window when the WM_DELETE_WINDOW message arrives */ if( (Atom) event.xclient.data.l[ 0 ] == fgDisplay.DeleteWindow ) { Added: trunk/freeglut/freeglut/src/freeglut_spaceball.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_spaceball.c (rev 0) +++ trunk/freeglut/freeglut/src/freeglut_spaceball.c 2009-11-06 13:26:16 UTC (rev 837) @@ -0,0 +1,456 @@ +/* Spaceball support for Linux. + * Written by John Tsiombikas <nu...@me...> + * + * This code supports 3Dconnexion's 6-dof space-whatever devices. + * It can communicate with either the proprietary 3Dconnexion daemon (3dxsrv) + * free spacenavd (http://spacenav.sourceforge.net), through the "standard" + * magellan X-based protocol. + */ + +#include <GL/freeglut.h> +#include "freeglut_internal.h" + +#if TARGET_HOST_POSIX_X11 +#include <X11/Xlib.h> + +enum { + SPNAV_EVENT_ANY, /* used by spnav_remove_events() */ + SPNAV_EVENT_MOTION, + SPNAV_EVENT_BUTTON /* includes both press and release */ +}; + +struct spnav_event_motion { + int type; + int x, y, z; + int rx, ry, rz; + unsigned int period; + int *data; +}; + +struct spnav_event_button { + int type; + int press; + int bnum; +}; + +typedef union spnav_event { + int type; + struct spnav_event_motion motion; + struct spnav_event_button button; +} spnav_event; + + +static int spnav_x11_open(Display *dpy, Window win); +static int spnav_x11_window(Window win); +static int spnav_x11_event(const XEvent *xev, spnav_event *event); +static int spnav_close(void); +static int spnav_fd(void); +static int spnav_remove_events(int type); + +static SFG_Window *spnav_win; +#endif + +static int sball_initialized; + + +void fgInitialiseSpaceball(void) +{ + if(sball_initialized) { + return; + } + +#if TARGET_HOST_POSIX_X11 + { + Window w; + + if(!fgStructure.CurrentWindow) { + fgWarning("fgInitialiseSpaceball: no current window!\n"); + return; + } + + w = fgStructure.CurrentWindow->Window.Handle; + if(spnav_x11_open(fgDisplay.Display, w) == -1) { + return; + } + } +#endif + + sball_initialized = 1; +} + +void fgSpaceballClose(void) +{ +#if TARGET_HOST_POSIX_X11 + spnav_close(); +#endif +} + +int fgHasSpaceball(void) +{ + if(!sball_initialized) { + fgInitialiseSpaceball(); + if(!sball_initialized) { + fgWarning("fgInitialiseSpaceball failed\n"); + return 0; + } + } + +#if TARGET_HOST_POSIX_X11 + /* XXX this function should somehow query the driver if there's a device + * plugged in, as opposed to just checking if there's a driver to talk to. + */ + return spnav_fd() == -1 ? 0 : 1; +#else + return 0; +#endif +} + +int fgSpaceballNumButtons(void) +{ + if(!sball_initialized) { + fgInitialiseSpaceball(); + if(!sball_initialized) { + fgWarning("fgInitialiseSpaceball failed\n"); + return 0; + } + } + +#if TARGET_HOST_POSIX_X11 + return 2; /* TODO implement this properly */ +#else + return 0; +#endif +} + +void fgSpaceballSetWindow(SFG_Window *window) +{ + if(!sball_initialized) { + fgInitialiseSpaceball(); + if(!sball_initialized) { + return; + } + } + +#if TARGET_HOST_POSIX_X11 + if(spnav_win != window) { + spnav_x11_window(window->Window.Handle); + spnav_win = window; + } +#endif +} + + +#if TARGET_HOST_POSIX_X11 +int fgIsSpaceballXEvent(const XEvent *xev) +{ + spnav_event sev; + + if(!sball_initialized) { + fgInitialiseSpaceball(); + if(!sball_initialized) { + return 0; + } + } + + return spnav_x11_event(xev, &sev); +} + +void fgSpaceballHandleXEvent(const XEvent *xev) +{ + spnav_event sev; + + if(!sball_initialized) { + fgInitialiseSpaceball(); + if(!sball_initialized) { + return; + } + } + + if(spnav_x11_event(xev, &sev)) { + switch(sev.type) { + case SPNAV_EVENT_MOTION: + if(sev.motion.x | sev.motion.y | sev.motion.z) { + INVOKE_WCB(*spnav_win, SpaceMotion, (sev.motion.x, sev.motion.y, sev.motion.z)); + } + if(sev.motion.rx | sev.motion.ry | sev.motion.rz) { + INVOKE_WCB(*spnav_win, SpaceRotation, (sev.motion.rx, sev.motion.ry, sev.motion.rz)); + } + spnav_remove_events(SPNAV_EVENT_MOTION); + break; + + case SPNAV_EVENT_BUTTON: + INVOKE_WCB(*spnav_win, SpaceButton, (sev.button.bnum, sev.button.press ? GLUT_DOWN : GLUT_UP)); + break; + + default: + break; + } + } +} + +/* +The following code is part of libspnav, part of the spacenav project (spacenav.sf.net) +Copyright (C) 2007-2009 John Tsiombikas <nu...@me...> + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +static Window get_daemon_window(Display *dpy); +static int catch_badwin(Display *dpy, XErrorEvent *err); + +static Display *dpy; +static Window app_win; +static Atom motion_event, button_press_event, button_release_event, command_event; + +enum { + CMD_APP_WINDOW = 27695, + CMD_APP_SENS +}; + +#define IS_OPEN dpy + +struct event_node { + spnav_event event; + struct event_node *next; +}; + +static int spnav_x11_open(Display *display, Window win) +{ + if(IS_OPEN) { + return -1; + } + + dpy = display; + + motion_event = XInternAtom(dpy, "MotionEvent", True); + button_press_event = XInternAtom(dpy, "ButtonPressEvent", True); + button_release_event = XInternAtom(dpy, "ButtonReleaseEvent", True); + command_event = XInternAtom(dpy, "CommandEvent", True); + + if(!motion_event || !button_press_event || !button_release_event || !command_event) { + dpy = 0; + return -1; /* daemon not started */ + } + + if(spnav_x11_window(win) == -1) { + dpy = 0; + return -1; /* daemon not started */ + } + + app_win = win; + return 0; +} + +static int spnav_close(void) +{ + if(dpy) { + spnav_x11_window(DefaultRootWindow(dpy)); + app_win = 0; + dpy = 0; + return 0; + } + return -1; +} + +static int spnav_x11_window(Window win) +{ + int (*prev_xerr_handler)(Display*, XErrorEvent*); + XEvent xev; + Window daemon_win; + + if(!IS_OPEN) { + return -1; + } + + if(!(daemon_win = get_daemon_window(dpy))) { + return -1; + } + + prev_xerr_handler = XSetErrorHandler(catch_badwin); + + xev.type = ClientMessage; + xev.xclient.send_event = False; + xev.xclient.display = dpy; + xev.xclient.window = win; + xev.xclient.message_type = command_event; + xev.xclient.format = 16; + xev.xclient.data.s[0] = ((unsigned int)win & 0xffff0000) >> 16; + xev.xclient.data.s[1] = (unsigned int)win & 0xffff; + xev.xclient.data.s[2] = CMD_APP_WINDOW; + + XSendEvent(dpy, daemon_win, False, 0, &xev); + XSync(dpy, False); + + XSetErrorHandler(prev_xerr_handler); + return 0; +} + +static int spnav_fd(void) +{ + if(dpy) { + return ConnectionNumber(dpy); + } + return -1; +} + +/*static int spnav_wait_event(spnav_event *event) +{ + if(dpy) { + for(;;) { + XEvent xev; + XNextEvent(dpy, &xev); + + if(spnav_x11_event(&xev, event) > 0) { + return event->type; + } + } + } + return 0; +} + +static int spnav_poll_event(spnav_event *event) +{ + if(dpy) { + if(XPending(dpy)) { + XEvent xev; + XNextEvent(dpy, &xev); + + return spnav_x11_event(&xev, event); + } + } + return 0; +}*/ + +static Bool match_events(Display *dpy, XEvent *xev, char *arg) +{ + int evtype = *(int*)arg; + + if(xev->type != ClientMessage) { + return False; + } + + if(xev->xclient.message_type == motion_event) { + return !evtype || evtype == SPNAV_EVENT_MOTION ? True : False; + } + if(xev->xclient.message_type == button_press_event || + xev->xclient.message_type == button_release_event) { + return !evtype || evtype == SPNAV_EVENT_BUTTON ? True : False; + } + return False; +} + +static int spnav_remove_events(int type) +{ + int rm_count = 0; + + if(dpy) { + XEvent xev; + + while(XCheckIfEvent(dpy, &xev, match_events, (char*)&type)) { + rm_count++; + } + return rm_count; + } + return 0; +} + +static int spnav_x11_event(const XEvent *xev, spnav_event *event) +{ + int i; + int xmsg_type; + + if(xev->type != ClientMessage) { + return 0; + } + + xmsg_type = xev->xclient.message_type; + + if(xmsg_type != motion_event && xmsg_type != button_press_event && + xmsg_type != button_release_event) { + return 0; + } + + if(xmsg_type == motion_event) { + event->type = SPNAV_EVENT_MOTION; + event->motion.data = &event->motion.x; + + for(i=0; i<6; i++) { + event->motion.data[i] = xev->xclient.data.s[i + 2]; + } + event->motion.period = xev->xclient.data.s[8]; + } else { + event->type = SPNAV_EVENT_BUTTON; + event->button.press = xmsg_type == button_press_event ? 1 : 0; + event->button.bnum = xev->xclient.data.s[2]; + } + return event->type; +} + + +static Window get_daemon_window(Display *dpy) +{ + Window win, root_win; + XTextProperty wname; + Atom type; + int fmt; + unsigned long nitems, bytes_after; + unsigned char *prop; + + root_win = DefaultRootWindow(dpy); + + XGetWindowProperty(dpy, root_win, command_event, 0, 1, False, AnyPropertyType, &type, &fmt, &nitems, &bytes_after, &prop); + if(!prop) { + return 0; + } + + win = *(Window*)prop; + XFree(prop); + + if(!XGetWMName(dpy, win, &wname) || strcmp("Magellan Window", (char*)wname.value) != 0) { + return 0; + } + + return win; +} + +static int catch_badwin(Display *dpy, XErrorEvent *err) +{ + char buf[256]; + + if(err->error_code == BadWindow) { + /* do nothing? */ + } else { + XGetErrorText(dpy, err->error_code, buf, sizeof buf); + fprintf(stderr, "Caught unexpected X error: %s\n", buf); + } + return 0; +} + +#endif /* TARGET_HOST_POSIX_X11 */ Modified: trunk/freeglut/freeglut/src/freeglut_state.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_state.c 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/src/freeglut_state.c 2009-11-06 13:26:16 UTC (rev 837) @@ -675,10 +675,14 @@ return 0; case GLUT_HAS_SPACEBALL: + return fgHasSpaceball(); + case GLUT_HAS_TABLET: return 0; case GLUT_NUM_SPACEBALL_BUTTONS: + return fgSpaceballNumButtons(); + case GLUT_NUM_TABLET_BUTTONS: return 0; Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2009-11-05 13:45:52 UTC (rev 836) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2009-11-06 13:26:16 UTC (rev 837) @@ -593,12 +593,17 @@ { #if TARGET_HOST_POSIX_X11 if ( window ) + { glXMakeContextCurrent( fgDisplay.Display, window->Window.Handle, window->Window.Handle, window->Window.Context ); + + /* also register this window to receive spaceball events */ + fgSpaceballSetWindow(window); + } #elif TARGET_HOST_MS_WINDOWS if( fgStructure.CurrentWindow ) ReleaseDC( fgStructure.CurrentWindow->Window.Handle, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-11-08 02:00:27
|
Revision: 839 http://freeglut.svn.sourceforge.net/freeglut/?rev=839&view=rev Author: fayjf Date: 2009-11-08 02:00:17 +0000 (Sun, 08 Nov 2009) Log Message: ----------- Converting tab characters to spaces in the source code ... Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl trunk/freeglut/freeglut/src/freeglut_spaceball.c Modified: trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c 2009-11-07 02:16:38 UTC (rev 838) +++ trunk/freeglut/freeglut/progs/demos/spaceball/spaceball.c 2009-11-08 02:00:17 UTC (rev 839) @@ -21,153 +21,153 @@ void disp(void); void reshape(int x, int y); void keyb(unsigned char key, int x, int y); -void sbmot(int x, int y, int z); /* spaceball translation */ -void sbrot(int x, int y, int z); /* spaceball rotation */ -void sbbut(int bn, int state); /* spaceball button */ +void sbmot(int x, int y, int z); /* spaceball translation */ +void sbrot(int x, int y, int z); /* spaceball rotation */ +void sbbut(int bn, int state); /* spaceball button */ vec3_t pos = {0, 0, -6}; quat_t rot = {0, 0, 0, 1}; int main(int argc, char **argv) { - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("spaceball demo"); + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); + glutCreateWindow("spaceball demo"); - glutDisplayFunc(disp); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyb); - glutSpaceballMotionFunc(sbmot); - glutSpaceballRotateFunc(sbrot); - glutSpaceballButtonFunc(sbbut); + glutDisplayFunc(disp); + glutReshapeFunc(reshape); + glutKeyboardFunc(keyb); + glutSpaceballMotionFunc(sbmot); + glutSpaceballRotateFunc(sbrot); + glutSpaceballButtonFunc(sbbut); - glEnable(GL_CULL_FACE); + glEnable(GL_CULL_FACE); - glutMainLoop(); - return 0; + glutMainLoop(); + return 0; } void disp(void) { - mat4_t xform; + mat4_t xform; - quat_to_mat(xform, rot); + quat_to_mat(xform, rot); - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(pos.x, pos.y, pos.z); - glMultTransposeMatrixf((float*)xform); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(pos.x, pos.y, pos.z); + glMultTransposeMatrixf((float*)xform); - draw_cube(); + draw_cube(); - glutSwapBuffers(); + glutSwapBuffers(); } void draw_cube(void) { - glBegin(GL_QUADS); - /* face +Z */ - glNormal3f(0, 0, 1); - glColor3f(1, 0, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - /* face +X */ - glNormal3f(1, 0, 0); - glColor3f(0, 1, 0); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - /* face -Z */ - glNormal3f(0, 0, -1); - glColor3f(0, 0, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - /* face -X */ - glNormal3f(-1, 0, 0); - glColor3f(1, 1, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - /* face +Y */ - glNormal3f(0, 1, 0); - glColor3f(0, 1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(1, 1, 1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - /* face -Y */ - glNormal3f(0, -1, 0); - glColor3f(1, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, -1, 1); - glVertex3f(-1, -1, 1); - glEnd(); + glBegin(GL_QUADS); + /* face +Z */ + glNormal3f(0, 0, 1); + glColor3f(1, 0, 0); + glVertex3f(-1, -1, 1); + glVertex3f(1, -1, 1); + glVertex3f(1, 1, 1); + glVertex3f(-1, 1, 1); + /* face +X */ + glNormal3f(1, 0, 0); + glColor3f(0, 1, 0); + glVertex3f(1, -1, 1); + glVertex3f(1, -1, -1); + glVertex3f(1, 1, -1); + glVertex3f(1, 1, 1); + /* face -Z */ + glNormal3f(0, 0, -1); + glColor3f(0, 0, 1); + glVertex3f(1, -1, -1); + glVertex3f(-1, -1, -1); + glVertex3f(-1, 1, -1); + glVertex3f(1, 1, -1); + /* face -X */ + glNormal3f(-1, 0, 0); + glColor3f(1, 1, 0); + glVertex3f(-1, -1, -1); + glVertex3f(-1, -1, 1); + glVertex3f(-1, 1, 1); + glVertex3f(-1, 1, -1); + /* face +Y */ + glNormal3f(0, 1, 0); + glColor3f(0, 1, 1); + glVertex3f(-1, 1, 1); + glVertex3f(1, 1, 1); + glVertex3f(1, 1, -1); + glVertex3f(-1, 1, -1); + /* face -Y */ + glNormal3f(0, -1, 0); + glColor3f(1, 0, 1); + glVertex3f(-1, -1, -1); + glVertex3f(1, -1, -1); + glVertex3f(1, -1, 1); + glVertex3f(-1, -1, 1); + glEnd(); } /* 45deg fov */ -#define FOV (M_PI / 4.0) +#define FOV (M_PI / 4.0) void reshape(int x, int y) { - float aspect = (float)x / (float)y; - float halfy = tan(FOV / 2.0); - float halfx = halfy * aspect; + float aspect = (float)x / (float)y; + float halfy = tan(FOV / 2.0); + float halfx = halfy * aspect; - glViewport(0, 0, x, y); + glViewport(0, 0, x, y); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-halfx, halfx, -halfy, halfy, 1.0, 1000.0); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-halfx, halfx, -halfy, halfy, 1.0, 1000.0); } void keyb(unsigned char key, int x, int y) { - switch(key) { - case 'q': - case 'Q': - case 27: - exit(0); + switch(key) { + case 'q': + case 'Q': + case 27: + exit(0); - case ' ': - /* reset initial view */ - pos = v3_cons(0, 0, -6); - rot = quat_cons(1, 0, 0, 0); - glutPostRedisplay(); + case ' ': + /* reset initial view */ + pos = v3_cons(0, 0, -6); + rot = quat_cons(1, 0, 0, 0); + glutPostRedisplay(); - default: - break; - } + default: + break; + } } void sbmot(int x, int y, int z) { - pos.x += x * 0.001; - pos.y += y * 0.001; - pos.z -= z * 0.001; - glutPostRedisplay(); + pos.x += x * 0.001; + pos.y += y * 0.001; + pos.z -= z * 0.001; + glutPostRedisplay(); } void sbrot(int x, int y, int z) { - float axis_len = sqrt(x * x + y * y + z * z); - rot = quat_rotate(rot, axis_len * 0.001, -x / axis_len, -y / axis_len, z / axis_len); - glutPostRedisplay(); + float axis_len = sqrt(x * x + y * y + z * z); + rot = quat_rotate(rot, axis_len * 0.001, -x / axis_len, -y / axis_len, z / axis_len); + glutPostRedisplay(); } void sbbut(int bn, int state) { - if(state == GLUT_DOWN) { - pos = v3_cons(0, 0, -6); - rot = quat_cons(1, 0, 0, 0); - glutPostRedisplay(); - } + if(state == GLUT_DOWN) { + pos = v3_cons(0, 0, -6); + rot = quat_cons(1, 0, 0, 0); + glutPostRedisplay(); + } } Modified: trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c 2009-11-07 02:16:38 UTC (rev 838) +++ trunk/freeglut/freeglut/progs/demos/spaceball/vmath.c 2009-11-08 02:00:17 UTC (rev 839) @@ -3,14 +3,14 @@ quat_t quat_rotate(quat_t q, float angle, float x, float y, float z) { - quat_t rq; - float half_angle = angle * 0.5; - float sin_half = sin(half_angle); + quat_t rq; + float half_angle = angle * 0.5; + float sin_half = sin(half_angle); - rq.w = cos(half_angle); - rq.x = x * sin_half; - rq.y = y * sin_half; - rq.z = z * sin_half; + rq.w = cos(half_angle); + rq.x = x * sin_half; + rq.y = y * sin_half; + rq.z = z * sin_half; - return quat_mul(q, rq); + return quat_mul(q, rq); } Modified: trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h 2009-11-07 02:16:38 UTC (rev 838) +++ trunk/freeglut/freeglut/progs/demos/spaceball/vmath.h 2009-11-08 02:00:17 UTC (rev 839) @@ -21,11 +21,11 @@ /* matrix functions */ static inline void m4_cons(mat4_t m, - float m11, float m12, float m13, float m14, - float m21, float m22, float m23, float m24, - float m31, float m32, float m33, float m34, - float m41, float m42, float m43, float m44); + float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44); #include "vmath.inl" -#endif /* VMATH_H_ */ +#endif /* VMATH_H_ */ Modified: trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl 2009-11-07 02:16:38 UTC (rev 838) +++ trunk/freeglut/freeglut/progs/demos/spaceball/vmath.inl 2009-11-08 02:00:17 UTC (rev 839) @@ -1,68 +1,68 @@ /* vector functions */ static inline vec3_t v3_cons(float x, float y, float z) { - vec3_t res; - res.x = x; - res.y = y; - res.z = z; - return res; + vec3_t res; + res.x = x; + res.y = y; + res.z = z; + return res; } static inline vec3_t quat_vec(quat_t q) { - vec3_t v; - v.x = q.x; - v.y = q.y; - v.z = q.z; - return v; + vec3_t v; + v.x = q.x; + v.y = q.y; + v.z = q.z; + return v; } static inline float v3_dot(vec3_t v1, vec3_t v2) { - return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; + return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; } /* quaternion functions */ static inline quat_t quat_cons(float s, float x, float y, float z) { - quat_t q; - q.x = x; - q.y = y; - q.z = z; - q.w = s; - return q; + quat_t q; + q.x = x; + q.y = y; + q.z = z; + q.w = s; + return q; } static inline quat_t quat_mul(quat_t q1, quat_t q2) { - quat_t res; - vec3_t v1 = quat_vec(q1); - vec3_t v2 = quat_vec(q2); + quat_t res; + vec3_t v1 = quat_vec(q1); + vec3_t v2 = quat_vec(q2); - res.w = q1.w * q2.w - v3_dot(v1, v2); - res.x = v2.x * q1.w + v1.x * q2.w + (v1.y * v2.z - v1.z * v2.y); - res.y = v2.y * q1.w + v1.y * q2.w + (v1.z * v2.x - v1.x * v2.z); - res.z = v2.z * q1.w + v1.z * q2.w + (v1.x * v2.y - v1.y * v2.x); - return res; + res.w = q1.w * q2.w - v3_dot(v1, v2); + res.x = v2.x * q1.w + v1.x * q2.w + (v1.y * v2.z - v1.z * v2.y); + res.y = v2.y * q1.w + v1.y * q2.w + (v1.z * v2.x - v1.x * v2.z); + res.z = v2.z * q1.w + v1.z * q2.w + (v1.x * v2.y - v1.y * v2.x); + return res; } static inline void quat_to_mat(mat4_t res, quat_t q) { - m4_cons(res, 1.0 - 2.0 * q.y*q.y - 2.0 * q.z*q.z, 2.0 * q.x * q.y + 2.0 * q.w * q.z, 2.0 * q.z * q.x - 2.0 * q.w * q.y, 0, - 2.0 * q.x * q.y - 2.0 * q.w * q.z, 1.0 - 2.0 * q.x*q.x - 2.0 * q.z*q.z, 2.0 * q.y * q.z + 2.0 * q.w * q.x, 0, - 2.0 * q.z * q.x + 2.0 * q.w * q.y, 2.0 * q.y * q.z - 2.0 * q.w * q.x, 1.0 - 2.0 * q.x*q.x - 2.0 * q.y*q.y, 0, - 0, 0, 0, 1); + m4_cons(res, 1.0 - 2.0 * q.y*q.y - 2.0 * q.z*q.z, 2.0 * q.x * q.y + 2.0 * q.w * q.z, 2.0 * q.z * q.x - 2.0 * q.w * q.y, 0, + 2.0 * q.x * q.y - 2.0 * q.w * q.z, 1.0 - 2.0 * q.x*q.x - 2.0 * q.z*q.z, 2.0 * q.y * q.z + 2.0 * q.w * q.x, 0, + 2.0 * q.z * q.x + 2.0 * q.w * q.y, 2.0 * q.y * q.z - 2.0 * q.w * q.x, 1.0 - 2.0 * q.x*q.x - 2.0 * q.y*q.y, 0, + 0, 0, 0, 1); } /* matrix functions */ static inline void m4_cons(mat4_t m, - float m11, float m12, float m13, float m14, - float m21, float m22, float m23, float m24, - float m31, float m32, float m33, float m34, - float m41, float m42, float m43, float m44) + float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44) { - m[0][0] = m11; m[0][1] = m12; m[0][2] = m13; m[0][3] = m14; - m[1][0] = m21; m[1][1] = m22; m[1][2] = m23; m[1][3] = m24; - m[2][0] = m31; m[2][1] = m32; m[2][2] = m33; m[2][3] = m34; - m[3][0] = m41; m[3][1] = m42; m[3][2] = m43; m[3][3] = m44; + m[0][0] = m11; m[0][1] = m12; m[0][2] = m13; m[0][3] = m14; + m[1][0] = m21; m[1][1] = m22; m[1][2] = m23; m[1][3] = m24; + m[2][0] = m31; m[2][1] = m32; m[2][2] = m33; m[2][3] = m34; + m[3][0] = m41; m[3][1] = m42; m[3][2] = m43; m[3][3] = m44; } Modified: trunk/freeglut/freeglut/src/freeglut_spaceball.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_spaceball.c 2009-11-07 02:16:38 UTC (rev 838) +++ trunk/freeglut/freeglut/src/freeglut_spaceball.c 2009-11-08 02:00:17 UTC (rev 839) @@ -14,9 +14,9 @@ #include <X11/Xlib.h> enum { - SPNAV_EVENT_ANY, /* used by spnav_remove_events() */ + SPNAV_EVENT_ANY, /* used by spnav_remove_events() */ SPNAV_EVENT_MOTION, - SPNAV_EVENT_BUTTON /* includes both press and release */ + SPNAV_EVENT_BUTTON /* includes both press and release */ }; struct spnav_event_motion { @@ -62,7 +62,7 @@ #if TARGET_HOST_POSIX_X11 { Window w; - + if(!fgStructure.CurrentWindow) return; @@ -114,7 +114,7 @@ } #if TARGET_HOST_POSIX_X11 - return 2; /* TODO implement this properly */ + return 2; /* TODO implement this properly */ #else return 0; #endif @@ -171,7 +171,7 @@ INVOKE_WCB(*spnav_win, SpaceMotion, (sev.motion.x, sev.motion.y, sev.motion.z)); } if(sev.motion.rx | sev.motion.ry | sev.motion.rz) { - INVOKE_WCB(*spnav_win, SpaceRotation, (sev.motion.rx, sev.motion.ry, sev.motion.rz)); + INVOKE_WCB(*spnav_win, SpaceRotation, (sev.motion.rx, sev.motion.ry, sev.motion.rz)); } spnav_remove_events(SPNAV_EVENT_MOTION); break; @@ -228,227 +228,227 @@ static Atom motion_event, button_press_event, button_release_event, command_event; enum { - CMD_APP_WINDOW = 27695, - CMD_APP_SENS + CMD_APP_WINDOW = 27695, + CMD_APP_SENS }; -#define IS_OPEN dpy +#define IS_OPEN dpy struct event_node { - spnav_event event; - struct event_node *next; + spnav_event event; + struct event_node *next; }; static int spnav_x11_open(Display *display, Window win) { - if(IS_OPEN) { - return -1; - } + if(IS_OPEN) { + return -1; + } - dpy = display; + dpy = display; - motion_event = XInternAtom(dpy, "MotionEvent", True); - button_press_event = XInternAtom(dpy, "ButtonPressEvent", True); - button_release_event = XInternAtom(dpy, "ButtonReleaseEvent", True); - command_event = XInternAtom(dpy, "CommandEvent", True); + motion_event = XInternAtom(dpy, "MotionEvent", True); + button_press_event = XInternAtom(dpy, "ButtonPressEvent", True); + button_release_event = XInternAtom(dpy, "ButtonReleaseEvent", True); + command_event = XInternAtom(dpy, "CommandEvent", True); - if(!motion_event || !button_press_event || !button_release_event || !command_event) { - dpy = 0; - return -1; /* daemon not started */ - } + if(!motion_event || !button_press_event || !button_release_event || !command_event) { + dpy = 0; + return -1; /* daemon not started */ + } - if(spnav_x11_window(win) == -1) { - dpy = 0; - return -1; /* daemon not started */ - } + if(spnav_x11_window(win) == -1) { + dpy = 0; + return -1; /* daemon not started */ + } - app_win = win; - return 0; + app_win = win; + return 0; } static int spnav_close(void) { - if(dpy) { - spnav_x11_window(DefaultRootWindow(dpy)); - app_win = 0; - dpy = 0; - return 0; - } - return -1; + if(dpy) { + spnav_x11_window(DefaultRootWindow(dpy)); + app_win = 0; + dpy = 0; + return 0; + } + return -1; } static int spnav_x11_window(Window win) { - int (*prev_xerr_handler)(Display*, XErrorEvent*); - XEvent xev; - Window daemon_win; + int (*prev_xerr_handler)(Display*, XErrorEvent*); + XEvent xev; + Window daemon_win; - if(!IS_OPEN) { - return -1; - } + if(!IS_OPEN) { + return -1; + } - if(!(daemon_win = get_daemon_window(dpy))) { - return -1; - } + if(!(daemon_win = get_daemon_window(dpy))) { + return -1; + } - prev_xerr_handler = XSetErrorHandler(catch_badwin); + prev_xerr_handler = XSetErrorHandler(catch_badwin); - xev.type = ClientMessage; - xev.xclient.send_event = False; - xev.xclient.display = dpy; - xev.xclient.window = win; - xev.xclient.message_type = command_event; - xev.xclient.format = 16; - xev.xclient.data.s[0] = ((unsigned int)win & 0xffff0000) >> 16; - xev.xclient.data.s[1] = (unsigned int)win & 0xffff; - xev.xclient.data.s[2] = CMD_APP_WINDOW; + xev.type = ClientMessage; + xev.xclient.send_event = False; + xev.xclient.display = dpy; + xev.xclient.window = win; + xev.xclient.message_type = command_event; + xev.xclient.format = 16; + xev.xclient.data.s[0] = ((unsigned int)win & 0xffff0000) >> 16; + xev.xclient.data.s[1] = (unsigned int)win & 0xffff; + xev.xclient.data.s[2] = CMD_APP_WINDOW; - XSendEvent(dpy, daemon_win, False, 0, &xev); - XSync(dpy, False); + XSendEvent(dpy, daemon_win, False, 0, &xev); + XSync(dpy, False); - XSetErrorHandler(prev_xerr_handler); - return 0; + XSetErrorHandler(prev_xerr_handler); + return 0; } static int spnav_fd(void) { - if(dpy) { - return ConnectionNumber(dpy); - } - return -1; + if(dpy) { + return ConnectionNumber(dpy); + } + return -1; } /*static int spnav_wait_event(spnav_event *event) { - if(dpy) { - for(;;) { - XEvent xev; - XNextEvent(dpy, &xev); + if(dpy) { + for(;;) { + XEvent xev; + XNextEvent(dpy, &xev); - if(spnav_x11_event(&xev, event) > 0) { - return event->type; - } - } - } - return 0; + if(spnav_x11_event(&xev, event) > 0) { + return event->type; + } + } + } + return 0; } static int spnav_poll_event(spnav_event *event) { - if(dpy) { - if(XPending(dpy)) { - XEvent xev; - XNextEvent(dpy, &xev); + if(dpy) { + if(XPending(dpy)) { + XEvent xev; + XNextEvent(dpy, &xev); - return spnav_x11_event(&xev, event); - } - } - return 0; + return spnav_x11_event(&xev, event); + } + } + return 0; }*/ static Bool match_events(Display *dpy, XEvent *xev, char *arg) { - int evtype = *(int*)arg; + int evtype = *(int*)arg; - if(xev->type != ClientMessage) { - return False; - } + if(xev->type != ClientMessage) { + return False; + } - if(xev->xclient.message_type == motion_event) { - return !evtype || evtype == SPNAV_EVENT_MOTION ? True : False; - } - if(xev->xclient.message_type == button_press_event || - xev->xclient.message_type == button_release_event) { - return !evtype || evtype == SPNAV_EVENT_BUTTON ? True : False; - } - return False; + if(xev->xclient.message_type == motion_event) { + return !evtype || evtype == SPNAV_EVENT_MOTION ? True : False; + } + if(xev->xclient.message_type == button_press_event || + xev->xclient.message_type == button_release_event) { + return !evtype || evtype == SPNAV_EVENT_BUTTON ? True : False; + } + return False; } static int spnav_remove_events(int type) { - int rm_count = 0; + int rm_count = 0; - if(dpy) { - XEvent xev; + if(dpy) { + XEvent xev; - while(XCheckIfEvent(dpy, &xev, match_events, (char*)&type)) { - rm_count++; - } - return rm_count; - } - return 0; + while(XCheckIfEvent(dpy, &xev, match_events, (char*)&type)) { + rm_count++; + } + return rm_count; + } + return 0; } static int spnav_x11_event(const XEvent *xev, spnav_event *event) { - int i; - int xmsg_type; + int i; + int xmsg_type; - if(xev->type != ClientMessage) { - return 0; - } + if(xev->type != ClientMessage) { + return 0; + } - xmsg_type = xev->xclient.message_type; + xmsg_type = xev->xclient.message_type; - if(xmsg_type != motion_event && xmsg_type != button_press_event && - xmsg_type != button_release_event) { - return 0; - } + if(xmsg_type != motion_event && xmsg_type != button_press_event && + xmsg_type != button_release_event) { + return 0; + } - if(xmsg_type == motion_event) { - event->type = SPNAV_EVENT_MOTION; - event->motion.data = &event->motion.x; + if(xmsg_type == motion_event) { + event->type = SPNAV_EVENT_MOTION; + event->motion.data = &event->motion.x; - for(i=0; i<6; i++) { - event->motion.data[i] = xev->xclient.data.s[i + 2]; - } - event->motion.period = xev->xclient.data.s[8]; - } else { - event->type = SPNAV_EVENT_BUTTON; - event->button.press = xmsg_type == button_press_event ? 1 : 0; - event->button.bnum = xev->xclient.data.s[2]; - } - return event->type; + for(i=0; i<6; i++) { + event->motion.data[i] = xev->xclient.data.s[i + 2]; + } + event->motion.period = xev->xclient.data.s[8]; + } else { + event->type = SPNAV_EVENT_BUTTON; + event->button.press = xmsg_type == button_press_event ? 1 : 0; + event->button.bnum = xev->xclient.data.s[2]; + } + return event->type; } static Window get_daemon_window(Display *dpy) { - Window win, root_win; - XTextProperty wname; - Atom type; - int fmt; - unsigned long nitems, bytes_after; - unsigned char *prop; + Window win, root_win; + XTextProperty wname; + Atom type; + int fmt; + unsigned long nitems, bytes_after; + unsigned char *prop; - root_win = DefaultRootWindow(dpy); + root_win = DefaultRootWindow(dpy); - XGetWindowProperty(dpy, root_win, command_event, 0, 1, False, AnyPropertyType, &type, &fmt, &nitems, &bytes_after, &prop); - if(!prop) { - return 0; - } + XGetWindowProperty(dpy, root_win, command_event, 0, 1, False, AnyPropertyType, &type, &fmt, &nitems, &bytes_after, &prop); + if(!prop) { + return 0; + } - win = *(Window*)prop; - XFree(prop); + win = *(Window*)prop; + XFree(prop); - if(!XGetWMName(dpy, win, &wname) || strcmp("Magellan Window", (char*)wname.value) != 0) { - return 0; - } + if(!XGetWMName(dpy, win, &wname) || strcmp("Magellan Window", (char*)wname.value) != 0) { + return 0; + } - return win; + return win; } static int catch_badwin(Display *dpy, XErrorEvent *err) { - char buf[256]; + char buf[256]; - if(err->error_code == BadWindow) { - /* do nothing? */ - } else { - XGetErrorText(dpy, err->error_code, buf, sizeof buf); - fprintf(stderr, "Caught unexpected X error: %s\n", buf); - } - return 0; + if(err->error_code == BadWindow) { + /* do nothing? */ + } else { + XGetErrorText(dpy, err->error_code, buf, sizeof buf); + fprintf(stderr, "Caught unexpected X error: %s\n", buf); + } + return 0; } -#endif /* TARGET_HOST_POSIX_X11 */ +#endif /* TARGET_HOST_POSIX_X11 */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-11-11 00:59:57
|
Revision: 843 http://freeglut.svn.sourceforge.net/freeglut/?rev=843&view=rev Author: fayjf Date: 2009-11-11 00:59:50 +0000 (Wed, 11 Nov 2009) Log Message: ----------- Adding the "freeglut_spaceball.c" file to the MSVC6 project files Modified Paths: -------------- trunk/freeglut/freeglut/freeglut.dsp trunk/freeglut/freeglut/freeglut_static.dsp Modified: trunk/freeglut/freeglut/freeglut.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut.dsp 2009-11-10 01:42:32 UTC (rev 842) +++ trunk/freeglut/freeglut/freeglut.dsp 2009-11-11 00:59:50 UTC (rev 843) @@ -155,6 +155,10 @@ # End Source File # Begin Source File +SOURCE=.\src\freeglut_spaceball.c +# End Source File +# Begin Source File + SOURCE=.\src\freeglut_state.c # End Source File # Begin Source File Modified: trunk/freeglut/freeglut/freeglut_static.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut_static.dsp 2009-11-10 01:42:32 UTC (rev 842) +++ trunk/freeglut/freeglut/freeglut_static.dsp 2009-11-11 00:59:50 UTC (rev 843) @@ -149,6 +149,10 @@ # End Source File # Begin Source File +SOURCE=.\src\freeglut_spaceball.c +# End Source File +# Begin Source File + SOURCE=.\src\freeglut_state.c # End Source File # Begin Source File This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-11-14 19:11:32
|
Revision: 848 http://freeglut.svn.sourceforge.net/freeglut/?rev=848&view=rev Author: fayjf Date: 2009-11-14 19:11:21 +0000 (Sat, 14 Nov 2009) Log Message: ----------- Fixing the "freeglutdll.def" for real per e-mail from Martin Payne dated 12:58 PM, 11/14/09 Modified Paths: -------------- trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj =================================================================== --- trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj 2009-11-14 18:43:07 UTC (rev 847) +++ trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj 2009-11-14 19:11:21 UTC (rev 848) @@ -4,6 +4,7 @@ Version="9.00" Name="freeglut" ProjectGUID="{1AE4E979-0D35-4747-BF8E-DD60358F49DB}" + RootNamespace="freeglut" TargetFrameworkVersion="0" > <Platforms> @@ -690,6 +691,10 @@ /> </FileConfiguration> </File> + <File + RelativePath="..\src\freeglutdll.def" + > + </File> </Filter> <Filter Name="Header Files" @@ -724,6 +729,10 @@ Name="Resource Files" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" > + <File + RelativePath="..\freeglut.rc" + > + </File> </Filter> </Files> <Globals> Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2009-11-14 18:43:07 UTC (rev 847) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2009-11-14 19:11:21 UTC (rev 848) @@ -1,3 +1,4 @@ +LIBRARY freeglut VERSION 2.6 EXPORTS glutInit This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |