From f0f7dc61ab77a14f7b61c31090e167d41a1cc763 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Wed, 24 Dec 2014 21:23:29 +0000 Subject: [PATCH 01/61] brought back the option to build either as "glut" or "freeglut": FREEGLUT_REPLACE_GLUT git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1732 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/CMakeLists.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 17436cd..377f2f0 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -49,6 +49,9 @@ ENDIF() # OpenGL ES support OPTION(FREEGLUT_GLES "Use OpenGL ES (requires EGL)" OFF) +# option to build either as "glut" (ON) or "freeglut" (OFF) +OPTION(FREEGLUT_REPLACE_GLUT "Be a replacement for GLUT" ON) + SET(FREEGLUT_HEADERS include/GL/freeglut.h @@ -365,15 +368,20 @@ ELSE() # or special-cased FreeGLUT long ago (e.g. .so.4 on OpenBSD), so # the lack of support for current:revision:age in CMake should # not be a problem. - # - the output library should be named glut so it'll be linkable with -lglut + # - the output library should be named glut so it'll be linkable with -lglut + # (unless FREEGLUT_REPLACE_GLUT is false). # - the shared library should link to the dependency libraries so that the user # won't have to link them explicitly (they shouldn't have to know that we depend # on Xrandr or Xxf86vm) IF(FREEGLUT_GLES) - SET(LIBNAME freeglut-gles) + SET(LIBNAME freeglut-gles) ELSE() - SET(LIBNAME glut) - ENDIF() + IF(FREEGLUT_REPLACE_GLUT) + SET(LIBNAME glut) + ELSE() + SET(LIBNAME freeglut) + ENDIF() + ENDIF() IF(FREEGLUT_BUILD_SHARED_LIBS) SET_TARGET_PROPERTIES(freeglut PROPERTIES VERSION ${SO_MAJOR}.${SO_MINOR}.${SO_REV} SOVERSION ${SO_MAJOR} OUTPUT_NAME ${LIBNAME}) From 19edce36b2f9c2fbee38ed06e1331b3270e64858 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Thu, 25 Dec 2014 14:35:09 +0000 Subject: [PATCH 02/61] CMake: FREEGLUT_REPLACE_GLUT option should not be visible on windows git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1733 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 377f2f0..98e9289 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -50,7 +50,9 @@ ENDIF() OPTION(FREEGLUT_GLES "Use OpenGL ES (requires EGL)" OFF) # option to build either as "glut" (ON) or "freeglut" (OFF) -OPTION(FREEGLUT_REPLACE_GLUT "Be a replacement for GLUT" ON) +IF(NOT WIN32) + OPTION(FREEGLUT_REPLACE_GLUT "Be a replacement for GLUT" ON) +ENDIF() SET(FREEGLUT_HEADERS From 4ccfe206f1cc22c9ed1c664895d536620a029034 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Thu, 25 Dec 2014 14:35:17 +0000 Subject: [PATCH 03/61] updated list of cmake switches in README.cmake git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1734 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/README.cmake | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/freeglut/freeglut/README.cmake b/freeglut/freeglut/README.cmake index 78c2984..ffd387e 100644 --- a/freeglut/freeglut/README.cmake +++ b/freeglut/freeglut/README.cmake @@ -50,11 +50,25 @@ How to build freeglut on UNIX Breakdown of CMake configuration options ---------------------------------------- -BUILD_SHARED_LIBS [ON, OFF] Build freeglut as a shared library -BUILD_STATIC_LIBS [ON, OFF] Build freeglut as a static library -CMAKE_BUILD_TYPE [Empty, Debug, Release] Can be overriden by passing it - as a make variable during build. -CMAKE_INSTALL_PREFIX Installation prefix (e.g. /usr/local on UNIX) -FREEGLUT_BUILD_DEMOS [ON, OFF] Controls whether the demos are built or not. -FREEGLUT_GLES1 [ON, OFF] TODO -FREEGLUT_GLES2 [ON, OFF] TODO +CMAKE_BUILD_TYPE [Empty, Debug, Release] Can be overriden by + passing it as a make variable during build. +CMAKE_INSTALL_PREFIX Installation prefix (e.g. /usr/local on UNIX) +FREEGLUT_BUILD_DEMOS [ON, OFF] Controls whether the demos are + built or not. +FREEGLUT_BUILD_SHARED_LIBS [ON, OFF] Build freeglut as a shared library +FREEGLUT_BUILD_STATIC_LIBS [ON, OFF] Build freeglut as a static library +FREEGLUT_GLES [ON, OFF] Link with GLEs libraries instead + of OpenGL +FREEGLUT_PRINT_ERRORS [ON, OFF] Controls whether errors are + default handled or not when user does not + provide an error callback +FREEGLUT_PRINT_WARNINGS [ON, OFF] Controls whether warnings are + default handled or not when user does not + provide an warning callback +FREEGLUT_REPLACE_GLUT [ON, OFF] For non-Windows platforms, + freeglut is by default built as -lglut. if + off, built as -lfreeglut. On Windows, + libraries are always built as freeglut. +INSTALL_PDB [ON, OFF] MSVC only: controls whether debug + information files are included with the + install or not From af5f03497e94f98d7504b900c9137f02e42ffe36 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Fri, 26 Dec 2014 18:14:59 +0000 Subject: [PATCH 04/61] added rc2 to the main page git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1736 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/index.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freeglut/web-src/index.php b/freeglut/web-src/index.php index f8d3f24..e1f6df5 100644 --- a/freeglut/web-src/index.php +++ b/freeglut/web-src/index.php @@ -54,9 +54,10 @@ mailing list.

Testing Releases
-

Version 3.0.0, Release Candidate 1 was released on Wednesday, - October 29, 2014.

-

+

+ Freeglut 3.0.0 Release Candidate 2 [Released: 26 Dec 2014]
+

+

Freeglut 3.0.0 Release Candidate 1 [Released: 29 Oct 2014]

Amongst many smaller enhancements and bugfixes, this RC includes From 4675a5039abebb53ca9aad990ef6307712707181 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 2 Jan 2015 16:08:54 +0000 Subject: [PATCH 05/61] adding void* callbacks todo to website feature planning page git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1737 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/progress.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freeglut/web-src/progress.php b/freeglut/web-src/progress.php index fe2dbc7..a7c4cbe 100644 --- a/freeglut/web-src/progress.php +++ b/freeglut/web-src/progress.php @@ -29,6 +29,10 @@ enhancements: 3.0 or later. by Vinnie Simonetti.Basic functionality as is now done: 3.0. Future enhancements: 3.0 or later. +callbacks with closuresHave versions of each callback +that take an additional void* that is passed back to the user upon +invocation.3.2 + 10bit display formatsGLUT supports that but FreeGLUT currently does not. Unfinished effort to implement here.3.0 From 5b152532af1c89fb9d7e07256186708519def14f Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 2 Jan 2015 16:39:13 +0000 Subject: [PATCH 06/61] more todo updating git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1738 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/progress.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/freeglut/web-src/progress.php b/freeglut/web-src/progress.php index a7c4cbe..fa8efe4 100644 --- a/freeglut/web-src/progress.php +++ b/freeglut/web-src/progress.php @@ -8,7 +8,7 @@ setPageTitle("A Look At Progress"); generateHeader($_SERVER['PHP_SELF']); ?> -

FreeGLUT 3.0
+
FreeGLUT 3.0 an onwards

Major work, its status and planned milestone. Help on any of these plans is very welcome! Fork the @@ -26,7 +26,8 @@ pointsBasic functionality as is now done: 3.0. Future enhancements: 3.0 or later. BlackBerry 10 portBasic but complete functionality -by Vinnie Simonetti.Basic functionality as is now done: 3.0. Future +by Vinnie +Simonetti.Basic functionality as is now done: 3.0. Future enhancements: 3.0 or later. callbacks with closuresHave versions of each callback @@ -51,17 +52,14 @@ href="http://nuclear.mutantstargoat.com/sw/libdrawtext/">libdrawtext libraryThe sooner the better, but will have to wait for asap after 3.0. -At runtime loading of OpenGL, OpenGL ES1 or OpenGL ES2 libraries, +At runtime loading of OpenGL or OpenGL ES libraries, like SDL.Currently CMake variables define at compile time which -of these three the library will be compiled against. No work has been -done on moving this to an at-runtime API.Having this in 3.0 -would be nice, but not essential. +of the two the library will be compiled against. No work has been +done to move this to an at-runtime API.After 3.0 Code reorganized such that platform-specific and display -server-specific code are decoupledDone, thanks John Fay! This -already led to a port to Android and support for GLES 1/2 on X11 -(thanks Sylvain for both!), and paves the way for implementing native -OSX and Wayland support3.0 +server-specific code are decoupledDone, thanks John +Fay!3.0 Position callbackDone: we now have a position callback to notify the client when the position of the window From 96f344f263c12ed8512bb50b71e98c710ddffffe Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 2 Jan 2015 16:39:27 +0000 Subject: [PATCH 07/61] high DPI awareness todo git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1739 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/progress.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/freeglut/web-src/progress.php b/freeglut/web-src/progress.php index fa8efe4..b0e6662 100644 --- a/freeglut/web-src/progress.php +++ b/freeglut/web-src/progress.php @@ -43,6 +43,14 @@ or later. cube, cone, etc, as well as the teapot and other parts of the teaset)3.0 +High-DPI awareness.As discussed here, +it is unclear what should be done. See also associated github +branch, though in the end maybe no code has to be added to FreeGLUT +for this at all, its the host program's responsibility to decide on DPI +awareness for his work.Figure this out for 3.2 + GL2+ and GLES 1/2 clean API for fonts and menusFor stroke fonts, we can use a similar approach as for the shapes, should thus be straightforward. For the bitmap fonts, this is more complex. From 0fb590f83ab5c0acb3e62864ddb00b53ecbb0e49 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 2 Jan 2015 16:39:41 +0000 Subject: [PATCH 08/61] todo: handling user typing non-western script git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1740 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/progress.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freeglut/web-src/progress.php b/freeglut/web-src/progress.php index b0e6662..1538772 100644 --- a/freeglut/web-src/progress.php +++ b/freeglut/web-src/progress.php @@ -43,6 +43,12 @@ or later. cube, cone, etc, as well as the teapot and other parts of the teaset)3.0 +handling non-western script input to windowsFor +Windows, see associated github +branch. What can be done on the Linux side?Figure this out +for 3.2 + High-DPI awareness.As discussed here, it is unclear what should be done. See also associated Date: Fri, 2 Jan 2015 16:39:56 +0000 Subject: [PATCH 09/61] add todo: don't deinitialize option git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1741 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/progress.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/freeglut/web-src/progress.php b/freeglut/web-src/progress.php index 1538772..4c5c47e 100644 --- a/freeglut/web-src/progress.php +++ b/freeglut/web-src/progress.php @@ -49,6 +49,15 @@ href="https://github.com/dcnieho/FreeGLUT/tree/feature_IMECHAR_callback">github branch. What can be done on the Linux side?Figure this out for 3.2 +option to not deinitialize when mainloop terminatesAs +is often requested, in some usage cases, it would be advantageous if +FreeGLUT did not automatically deinitialize when its last window is +closed. This has been implemented, but is awaiting testing on platforms +other than windows. Discussed here.As +it has potential complications on mobile platforms, it was decided to +leave this feature until after 3.0. + High-DPI awareness.As discussed here, it is unclear what should be done. See also associated Date: Sat, 3 Jan 2015 11:55:09 +0000 Subject: [PATCH 10/61] pkgconfig files should go to $(PREFIX)/lib, not $(PREFIX)/share. Closing bug #216 git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1742 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 98e9289..a00e54a 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -522,6 +522,6 @@ IF(FREEGLUT_GLES) SET(PC_FILENAME "freeglut-gles.pc") ENDIF() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/freeglut.pc.in ${CMAKE_BINARY_DIR}/freeglut.pc @ONLY) -INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION share/pkgconfig/ RENAME ${PC_FILENAME}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION lib/pkgconfig/ RENAME ${PC_FILENAME}) # TODO: change the library and .pc name when building for GLES, # e.g. -lglut-GLES From 7229171bf4070c0835f9022e6018945a6f4f1738 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Wed, 18 Feb 2015 00:37:05 +0000 Subject: [PATCH 11/61] Applied Daniel Macks' patch to use ${CMAKE_INSTALL_LIBDIR} instead of hardcoding lib for the installation directory of libraries, with the additional modification of installing the pkg-config files there too. closing bug #217 git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1743 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/CMakeLists.txt | 15 +++++++++------ freeglut/freeglut/freeglut.pc.in | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index a00e54a..909884c 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -1,6 +1,9 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR) PROJECT(freeglut) +# for multiarch LIBDIR support (requires cmake>=2.8.8) +INCLUDE(GNUInstallDirs) + # NOTE: On Windows and Cygwin, the dll's are placed in the # CMAKE_RUNTIME_OUTPUT_DIRECTORY, while their corresponding import # libraries end up in CMAKE_ARCHIVE_OUTPUT_DIRECTORY. On other @@ -413,8 +416,8 @@ ENDIF() IF(FREEGLUT_BUILD_SHARED_LIBS) INSTALL(TARGETS freeglut RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) IF(INSTALL_PDB) INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug/freeglut${CMAKE_DEBUG_POSTFIX}.pdb @@ -425,8 +428,8 @@ ENDIF() IF(FREEGLUT_BUILD_STATIC_LIBS) INSTALL(TARGETS freeglut_static RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) IF(INSTALL_PDB) INSTALL(FILES ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/Debug/freeglut_static${CMAKE_DEBUG_POSTFIX}.pdb @@ -522,6 +525,6 @@ IF(FREEGLUT_GLES) SET(PC_FILENAME "freeglut-gles.pc") ENDIF() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/freeglut.pc.in ${CMAKE_BINARY_DIR}/freeglut.pc @ONLY) -INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION lib/pkgconfig/ RENAME ${PC_FILENAME}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ RENAME ${PC_FILENAME}) # TODO: change the library and .pc name when building for GLES, # e.g. -lglut-GLES diff --git a/freeglut/freeglut/freeglut.pc.in b/freeglut/freeglut/freeglut.pc.in index 54340b3..bc9249c 100644 --- a/freeglut/freeglut/freeglut.pc.in +++ b/freeglut/freeglut/freeglut.pc.in @@ -1,5 +1,5 @@ prefix=@CMAKE_INSTALL_PREFIX@ -libdir=${prefix}/lib +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ includedir=${prefix}/include Name: glut From 8c295f061728fffa4be570696f98547498d36435 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Wed, 18 Feb 2015 03:59:21 +0000 Subject: [PATCH 12/61] added INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR}) to make sure X11 header files are correctly located, on systems where they are in weird places. This closes bug: #218 git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1744 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 909884c..43555fb 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -257,6 +257,7 @@ ENDIF(CMAKE_COMPILER_IS_GNUCC) INCLUDE(CheckIncludeFiles) IF(UNIX AND NOT(ANDROID OR BLACKBERRY)) FIND_PACKAGE(X11 REQUIRED) + INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR}) LIST(APPEND LIBS ${X11_LIBRARIES}) IF(X11_Xrandr_FOUND) SET(HAVE_X11_EXTENSIONS_XRANDR_H TRUE) From db2ea877b0eb6f5c514243acf85e97f878619d4a Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Wed, 18 Feb 2015 04:59:57 +0000 Subject: [PATCH 13/61] - changed the main INCLUDE_DIRECTORIES definition to place the main header locations first in the list instead of appending them. This gives priority to our freeglut*.h files instead of the old system-wide installed ones. - removed the Xxf86vm hack from CMakeLists.txt: it seems like it's not needed any more in new versions of cmake, and it fails to link on MacOSX. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1745 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/CMakeLists.txt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 43555fb..28f8651 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -265,10 +265,6 @@ IF(UNIX AND NOT(ANDROID OR BLACKBERRY)) ENDIF() IF(X11_xf86vmode_FOUND) SET(HAVE_X11_EXTENSIONS_XF86VMODE_H TRUE) - # Work-around http://www.cmake.org/Bug/bug_view_page.php?bug_id=6976 - IF(NOT "${X11_Xxf86vm_LIB}") - SET(X11_Xxf86vm_LIB "Xxf86vm") - ENDIF() LIST(APPEND LIBS ${X11_Xxf86vm_LIB}) ENDIF() IF(X11_Xinput_FOUND) @@ -329,7 +325,7 @@ ENDIF() # ensure that all CMake-generated files are kept away from the main source tree. # As a result, the build directory must to be added to the include path list. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h) -INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(BEFORE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src) ADD_DEFINITIONS(-DHAVE_CONFIG_H) IF(WIN32) # we also have to generate freeglut.rc, which contains the version From 310764e238ac8f2dfcb7bfdb4179a57ff9869f90 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Wed, 18 Feb 2015 05:03:16 +0000 Subject: [PATCH 14/61] MacOSX doesn't define HOST_NAME_MAX in unistd.h, which made freeglut fail to build. Now, if the definition is missing, we'll just define it arbitrarilly as 255, which should be a safe value. This is just needed for an obscure X11 WM protocol. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1746 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/x11/fg_window_x11.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freeglut/freeglut/src/x11/fg_window_x11.c b/freeglut/freeglut/src/x11/fg_window_x11.c index ae97b12..90f1966 100644 --- a/freeglut/freeglut/src/x11/fg_window_x11.c +++ b/freeglut/freeglut/src/x11/fg_window_x11.c @@ -40,6 +40,10 @@ #include "x11/fg_window_x11_glx.h" #endif +#ifndef HOST_NAME_MAX +#define HOST_NAME_MAX 255 +#endif + /* Motif window hints, only define needed ones */ typedef struct { From 3be8dc8380cbd5933c740ed7062f961dc39fc0df Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Wed, 18 Feb 2015 05:20:50 +0000 Subject: [PATCH 15/61] removed the completely outdated FrequentlyAskedQuestions file git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1747 7f0cb862-5218-0410-a997-914c9d46530a --- .gitattributes | 1 - freeglut/freeglut/FrequentlyAskedQuestions | 70 ---------------------- 2 files changed, 71 deletions(-) delete mode 100644 freeglut/freeglut/FrequentlyAskedQuestions diff --git a/.gitattributes b/.gitattributes index 587ea9b..61d425b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,7 +3,6 @@ freeglut/freeglut/AUTHORS svn_keywords=Author+Date+Id+Revision freeglut/freeglut/CMakeLists.txt svn_keywords=Author+Date+Id+Revision freeglut/freeglut/COPYING svn_keywords=Author+Date+Id+Revision freeglut/freeglut/ChangeLog svn_keywords=Author+Date+Id+Revision -freeglut/freeglut/FrequentlyAskedQuestions -text freeglut/freeglut/LISEZMOI.cygwin_mingw svn_keywords=Author+Date+Id+Revision freeglut/freeglut/LISEZ_MOI svn_keywords=Author+Date+Id+Revision freeglut/freeglut/NEWS svn_keywords=Author+Date+Id+Revision diff --git a/freeglut/freeglut/FrequentlyAskedQuestions b/freeglut/freeglut/FrequentlyAskedQuestions deleted file mode 100644 index 6261f1e..0000000 --- a/freeglut/freeglut/FrequentlyAskedQuestions +++ /dev/null @@ -1,70 +0,0 @@ -========== ===== ========= ===== ======== -FREQUENTLY ASKED QUESTIONS ABOUT freeglut -========== ===== ========= ===== ======== - -Last updated on November 28, 2006 - - -General Questions -======= ========= -(1) Will "freeglut" ever support (fill in the blank)? - - If the GLUT library supports the feature, "freeglut" should support it. If "freeglut" does not support it and there is a call for it, then we are certainly open to adding it. - - If the GLUT library does not support the feature, "freeglut" is probably not going to. The "freeglut" library was designed to be a drop-in replacement for GLUT, a lightweight and simple windowing system for the OpenGL Red Book demonstration programs and no more. If you want a more functional windowing system we suggest that you look elsewhere. - -(#) I have a question that is not answered here. What do I do to get an answer? - - Check the "README" files that came with the distribution. If the question is not addressed there, please post it on the "freeglut-developer" mailing list on the Source Forge web site. - - - - - -*nix Questions -==== ========= - -(1) How I can build "freeglut" with debugging symbols and traces? - - CFLAGS="-g $CFLAGS" LDFLAGS="-g $LDFLAGS" ./configure \ - --enable-debug - - -(2) How can I have both a normal, and a debug-enabled version of "freeglut"? - - cd .. - mkdir freeglut-normal - cd freeglut-normal - ../freeglut-2.x/configure - make - cd .. - mkdir freeglut-debug - CFLAGS="-g $CFLAGS" LDFLAGS="-g $LDFLAGS" \ - ../freeglut-2.x/ configure --enable-debug [*] - make - - [*] optionally use --program-suffix=dbg to have them coexist when installing - - -(3) My linking fails due to undefined symbols. What libraries do I need to link? - - Look at the generated libfreeglut.la or use libtool --link (see the libtool manual). - - - - - -Windows Questions -======= ========= - -(1) My linking fails due to undefined symbols. What libraries do I need to link? - - All the required libraries (and a couple of unnecessary ones) should be automatically included thanks to the "#pragma comment (lib" statements in "freeglut_std.h". If your linking fails due to undefined symbols, there is an excellent chance that "freeglut" is not the culprit. - - - - - -Other Operating System Questions -===== ========= ====== ========= - From 3f95e542fa8d4f05481ae2b77852f425065bd3ab Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Sat, 28 Feb 2015 04:15:13 +0000 Subject: [PATCH 16/61] - fixed a minor bug in the UNIX/X11 cursor code, causing an X error and abort due to a stale cursor cache, when the application (which calls glutSetCursor), uses glutLeaveMainLoop to close the connection to the X server, and then re-initializes freeglut and starts over with a new connection. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1749 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/x11/fg_cursor_x11.c | 53 +++++++++++++---------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/freeglut/freeglut/src/x11/fg_cursor_x11.c b/freeglut/freeglut/src/x11/fg_cursor_x11.c index 6d889f2..9d15900 100644 --- a/freeglut/freeglut/src/x11/fg_cursor_x11.c +++ b/freeglut/freeglut/src/x11/fg_cursor_x11.c @@ -61,6 +61,7 @@ struct tag_cursorCacheEntry { unsigned int cursorShape; /* an XC_foo value */ Cursor cachedCursor; /* None if the corresponding cursor has not been created yet */ + Display *dpy; /* display used to allocate this cursor */ }; /* @@ -68,26 +69,26 @@ struct tag_cursorCacheEntry { * the "normal" GLUT_CURSOR_* values start a 0 and are consecutive. */ static cursorCacheEntry cursorCache[] = { - { XC_arrow, None }, /* GLUT_CURSOR_RIGHT_ARROW */ - { XC_top_left_arrow, None }, /* GLUT_CURSOR_LEFT_ARROW */ - { XC_hand1, None }, /* GLUT_CURSOR_INFO */ - { XC_pirate, None }, /* GLUT_CURSOR_DESTROY */ - { XC_question_arrow, None }, /* GLUT_CURSOR_HELP */ - { XC_exchange, None }, /* GLUT_CURSOR_CYCLE */ - { XC_spraycan, None }, /* GLUT_CURSOR_SPRAY */ - { XC_watch, None }, /* GLUT_CURSOR_WAIT */ - { XC_xterm, None }, /* GLUT_CURSOR_TEXT */ - { XC_crosshair, None }, /* GLUT_CURSOR_CROSSHAIR */ - { XC_sb_v_double_arrow, None }, /* GLUT_CURSOR_UP_DOWN */ - { XC_sb_h_double_arrow, None }, /* GLUT_CURSOR_LEFT_RIGHT */ - { XC_top_side, None }, /* GLUT_CURSOR_TOP_SIDE */ - { XC_bottom_side, None }, /* GLUT_CURSOR_BOTTOM_SIDE */ - { XC_left_side, None }, /* GLUT_CURSOR_LEFT_SIDE */ - { XC_right_side, None }, /* GLUT_CURSOR_RIGHT_SIDE */ - { XC_top_left_corner, None }, /* GLUT_CURSOR_TOP_LEFT_CORNER */ - { XC_top_right_corner, None }, /* GLUT_CURSOR_TOP_RIGHT_CORNER */ - { XC_bottom_right_corner, None }, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */ - { XC_bottom_left_corner, None } /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */ + { XC_arrow, None, 0 }, /* GLUT_CURSOR_RIGHT_ARROW */ + { XC_top_left_arrow, None, 0 }, /* GLUT_CURSOR_LEFT_ARROW */ + { XC_hand1, None, 0 }, /* GLUT_CURSOR_INFO */ + { XC_pirate, None, 0 }, /* GLUT_CURSOR_DESTROY */ + { XC_question_arrow, None, 0 }, /* GLUT_CURSOR_HELP */ + { XC_exchange, None, 0 }, /* GLUT_CURSOR_CYCLE */ + { XC_spraycan, None, 0 }, /* GLUT_CURSOR_SPRAY */ + { XC_watch, None, 0 }, /* GLUT_CURSOR_WAIT */ + { XC_xterm, None, 0 }, /* GLUT_CURSOR_TEXT */ + { XC_crosshair, None, 0 }, /* GLUT_CURSOR_CROSSHAIR */ + { XC_sb_v_double_arrow, None, 0 }, /* GLUT_CURSOR_UP_DOWN */ + { XC_sb_h_double_arrow, None, 0 }, /* GLUT_CURSOR_LEFT_RIGHT */ + { XC_top_side, None, 0 }, /* GLUT_CURSOR_TOP_SIDE */ + { XC_bottom_side, None, 0 }, /* GLUT_CURSOR_BOTTOM_SIDE */ + { XC_left_side, None, 0 }, /* GLUT_CURSOR_LEFT_SIDE */ + { XC_right_side, None, 0 }, /* GLUT_CURSOR_RIGHT_SIDE */ + { XC_top_left_corner, None, 0 }, /* GLUT_CURSOR_TOP_LEFT_CORNER */ + { XC_top_right_corner, None, 0 }, /* GLUT_CURSOR_TOP_RIGHT_CORNER */ + { XC_bottom_right_corner, None, 0 }, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */ + { XC_bottom_left_corner, None, 0 } /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */ }; void fgPlatformSetCursor ( SFG_Window *window, int cursorID ) @@ -104,10 +105,18 @@ void fgPlatformSetCursor ( SFG_Window *window, int cursorID ) if( ( cursorIDToUse >= 0 ) && ( cursorIDToUse < sizeof( cursorCache ) / sizeof( cursorCache[0] ) ) ) { cursorCacheEntry *entry = &cursorCache[ cursorIDToUse ]; - if( entry->cachedCursor == None ) { + + /* the second clause forces an invalidation of the cached cursor, if it was + * created through a different display connection. + * This can only happen, in the extremely rare case where the user program calls the + * freeglut extension glutLeaveMainLoop, and then re-initializes freeglut and + * starts over. + */ + if( entry->cachedCursor == None || entry->dpy != fgDisplay.pDisplay.Display ) { entry->cachedCursor = XCreateFontCursor( fgDisplay.pDisplay.Display, entry->cursorShape ); - } + entry->dpy = fgDisplay.pDisplay.Display; + } cursor = entry->cachedCursor; } else { switch( cursorIDToUse ) From c63102d06d09f8a9d4044fd107fbda2034bb30c6 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Sat, 7 Mar 2015 18:53:54 +0000 Subject: [PATCH 17/61] added the init error handler example program contributed by Chris Marshall Not building it as part of the demos yet, since it was submitted quite late in the 3.0 release process git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1750 7f0cb862-5218-0410-a997-914c9d46530a --- .gitattributes | 1 + .../demos/init_error_func/init_error_func.c | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 freeglut/freeglut/progs/demos/init_error_func/init_error_func.c diff --git a/.gitattributes b/.gitattributes index 61d425b..6e6f370 100644 --- a/.gitattributes +++ b/.gitattributes @@ -43,6 +43,7 @@ freeglut/freeglut/progs/demos/One/objects.ico -text freeglut/freeglut/progs/demos/One/one.c svn_keywords=Author+Date+Id+Revision freeglut/freeglut/progs/demos/One/one.rc -text freeglut/freeglut/progs/demos/Resizer/Resizer.cpp -text +freeglut/freeglut/progs/demos/init_error_func/init_error_func.c -text freeglut/freeglut/progs/demos/multi-touch/multi-touch.c -text freeglut/freeglut/progs/demos/shapes/glmatrix.c -text freeglut/freeglut/progs/demos/shapes/glmatrix.h -text diff --git a/freeglut/freeglut/progs/demos/init_error_func/init_error_func.c b/freeglut/freeglut/progs/demos/init_error_func/init_error_func.c new file mode 100644 index 0000000..de5cf28 --- /dev/null +++ b/freeglut/freeglut/progs/demos/init_error_func/init_error_func.c @@ -0,0 +1,58 @@ +/* + * ------------------------------------------ + * user_error_handler.c + * + * This is a sample program showing a basic + * user defined error handlers with FreeGLUT + * ------------------------------------------ + */ + +#include + +/* + * ------------------------------------------ + * Declare our own Error handler for FreeGLUT + * ------------------------------------------ + */ + +/* This declares the vprintf() routine */ +#include + +/* This declares the va_list type */ +#include + +/* The new handler looks like a vprintf prototype */ +void myError (const char *fmt, va_list ap) +{ + fprintf(stderr, "myError: Entering user defined error handler\n"); + + /* print warning message */ + fprintf(stderr, "myError:"); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + + /* deInitialize the freeglut state */ + fprintf(stderr, "myError: Calling glutExit()\n"); + glutExit(); + + /* terminate error handler appropriately */ + fprintf(stderr, "myError: Exit-ing handler routine\n"); + + exit(1); +} + +/* + * ------------------------------------------ + * Just enough code to create the error to + * demonstrate the user defined handler + * ------------------------------------------ + */ +int main(int argc, char** argv) +{ + glutInitErrorFunc(&myError); + glutCreateWindow ("error test"); /* This is an error! */ + glutInit(&argc, argv); /* Should be called + after glutInit() */ + glutMainLoop(); + return 0; +} From c16fc72a2c8cab76799d317cac78f0e18e1b1c13 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Sat, 7 Mar 2015 18:55:40 +0000 Subject: [PATCH 18/61] fixed indentation in AUTHORS git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1751 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freeglut/freeglut/AUTHORS b/freeglut/freeglut/AUTHORS index 62db946..ec86e1e 100644 --- a/freeglut/freeglut/AUTHORS +++ b/freeglut/freeglut/AUTHORS @@ -27,7 +27,7 @@ James 'J.C.' Jones designing the new website John Tsiombikas - Linux spaceball support, XR&R gamemode, misc linux fixes and breakages + Linux spaceball support, XR&R gamemode, misc linux fixes and breakages Sylvain Beucler support for Android, X11/EGL, OpenGL(ES) 2.x, misc fixes From c5a4a56585c76d8716c5228cdd77c42e62bf68a5 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Sat, 7 Mar 2015 20:57:16 +0000 Subject: [PATCH 19/61] updated the readme file, and removed out of date and unmaintained files from the project root git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1752 7f0cb862-5218-0410-a997-914c9d46530a --- .gitattributes | 5 - freeglut/freeglut/LISEZMOI.cygwin_mingw | 218 ------------------------ freeglut/freeglut/LISEZ_MOI | 86 ---------- freeglut/freeglut/NEWS | 70 -------- freeglut/freeglut/README | 108 +++++------- freeglut/freeglut/README.mac | 33 ---- freeglut/freeglut/TODO | 107 ------------ 7 files changed, 46 insertions(+), 581 deletions(-) delete mode 100644 freeglut/freeglut/LISEZMOI.cygwin_mingw delete mode 100644 freeglut/freeglut/LISEZ_MOI delete mode 100644 freeglut/freeglut/NEWS delete mode 100644 freeglut/freeglut/README.mac delete mode 100644 freeglut/freeglut/TODO diff --git a/.gitattributes b/.gitattributes index 6e6f370..43bc6cf 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,17 +3,12 @@ freeglut/freeglut/AUTHORS svn_keywords=Author+Date+Id+Revision freeglut/freeglut/CMakeLists.txt svn_keywords=Author+Date+Id+Revision freeglut/freeglut/COPYING svn_keywords=Author+Date+Id+Revision freeglut/freeglut/ChangeLog svn_keywords=Author+Date+Id+Revision -freeglut/freeglut/LISEZMOI.cygwin_mingw svn_keywords=Author+Date+Id+Revision -freeglut/freeglut/LISEZ_MOI svn_keywords=Author+Date+Id+Revision -freeglut/freeglut/NEWS svn_keywords=Author+Date+Id+Revision freeglut/freeglut/README svn_keywords=Author+Date+Id+Revision freeglut/freeglut/README.android -text freeglut/freeglut/README.cmake -text freeglut/freeglut/README.cygwin_mingw svn_keywords=Author+Date+Id+Revision -freeglut/freeglut/README.mac -text freeglut/freeglut/README.mingw_cross svn_keywords=Author+Date+Id+Revision freeglut/freeglut/README.win32 svn_keywords=Author+Date+Id+Revision -freeglut/freeglut/TODO svn_keywords=Author+Date+Id+Revision freeglut/freeglut/android/Android.mk -text freeglut/freeglut/android/README -text freeglut/freeglut/android_toolchain.cmake -text diff --git a/freeglut/freeglut/LISEZMOI.cygwin_mingw b/freeglut/freeglut/LISEZMOI.cygwin_mingw deleted file mode 100644 index 04b275a..0000000 --- a/freeglut/freeglut/LISEZMOI.cygwin_mingw +++ /dev/null @@ -1,218 +0,0 @@ -Glut alors! - -Par Jean-Seb le vendredi 10 juillet 2009, 00:18 - - -Freeglut est une évolution open-source de Glut. -Sous Windows, on peut l'utiliser avec Cygwin. -Facile ? Oui, si on accepte de distribuer "cygwin1.dll" -Aidons Freeglut à conquérir son indépendance ! -m.à.j 10/7/2009 : génération d'une librairie pour linker depuis la dll. - - -Récupération des sources - - * Reprenez les sources de la version 2.6.0 qui intègre les changements - récents. - * 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éférable à la branche 2.4-stable, de - nombreux bugs étant corrigés. - * Vous trouverez les sources sur le site de Freeglut: - o http://freeglut.sourceforge.net/ - - -Principe -Objectif - - * Nous allons créer une dll liée à Cygwin, et une bibliothèque statique - indépendante - * Nous créerons également une librairie dynamique, permettant de linker avec - la dll. - -Liste des fichiers générés - - * freeglut.dll : une dll classique pour le linkage dynamique. - * libfreeglut.a : la bibliothèque statique. Le programme final est autonome - (du moins pour OpenGL). - * libfreeglutdll.a : la bibliothèque dynamique. Le programme final a besoin - de freeglut.dll. - - -Préparation - - * Dépliez l'archive freeglut. - * Allez dans le répertoire src (situé à la racine du répertoire Freeglut), - et créez un sous-répertoire "Gl" - o Dans ce sous-répertoire, copiez les fichiers du répertoire - "include/Gl" - - * Pourquoi faut-il créer un répertoire "Gl" pour la compilation ? - o C'était juste pour simplifier les choses lors de mes essais. - o Sinon vous pouvez créer directement les répertoires, et copier les - fichiers comme indiqué au point installation (lire plus loin). - - * Faites un peu de ménage dans /lib : - o Effacez toutes les références à la glut, pour ne pas avoir de - conflit au linkage. - o Cette étape est facultative, vous pouvez également choisir de ne - faire le ménage qu' après une compilation réussie de Freeglut. - o Attention à ne pas effacer, dans un enthousiasme rédempteur, la - bibliothèque glu32.lib (à 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épertoire "src/Common" - -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ée à 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èque statique indépendante de cygwin - ar cr lib$(libname).a $(objs) - #pas forcément obligatoire (création d'un index pour accélérer les accès) - 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ée une dll, une bibliothèque statique (une archive, en - d'autres termes) et la bibliothèque dynamique qui permettra l'utilisation - de la dll. - - * Ne cherchez pas à stripper la bibliothèque statique! Vous ne pourriez plus - compiler en statique. - o Par contre, vous pouvez stripper l'exécutable final obtenu lors de - la compilation de votre application. - - * J'ai choisi d'appeller la dll et les bibliothèques par leurs "vrais noms": - freeglut.dll libfreeglutdll.a et libfreeglut.a. - o Le script configure recréait (pour des raisons de compatibilité avec - l'ancienne bibliothèque 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écidé d'appeller les - choses par leur nom, afin d'éviter les confusions. - o Rien ne vous empêche de renommer la dll, si vous avez besoin - d'utiliser des programmes Glut que vous ne pouvez pas recompiler. - - * La bibliothèque dynamique est générée à partir de la dll. - o Par souci de concision, j'ai utilisé awk. Il génère le fichier - d'exports utilisé par dlltool. - o La seule chose notable est la sélection des fonctions dont le nom - commence par _glut, afin d'éviter d'inclure dans la librairie - dynamique des fonctions sans rapport avec freeglut. - o ensuite, on utilise dlltool de façon très 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épertoire /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 éventuellement besoin d'écraser d'anciens fichiers - include, correspondants à Glut, si vous l'avez installé avec Cygwin. - - -Utilisation de la bibliothèque - - * Nous allons tester avec le programme shapes, présent dans - progs/demos/shapes - o -mno-cygwin sert à forcer l'utilisation de Mingw sans la grosse - dépendance cygwin1.dll. - o -mwindows sert uniquement à enlever l'horrible fenêtre shell (très - utile pour la mise au point, par contre). - o -L. (notez le point après le "L") : j'ai laissé libfreeglut.a, - libfreeglutdll.a et freeglut.dll dans le répertoire de test, le - temps des tests justement. - - -Compilation en librairie statique freeglut, sans cygwin - - * Toute l'astuce réside dans le define : -DFREEGLUT_STATIC - o Il sert à obtenir la bonne décoration des noms de fonctions dans les - imports de la lib Freeglut. - o Vous pouvez essayer sans et prendre un éditeur hexa pour voir les - différences dans l'objet. - * attention à l'ordre des bibliothèques : -lfreeglut (statique) doit se - trouver avant la déclaration des bibliothèques dynamiques. - - * gcc shapes.c -L. -lfreeglut -lopengl32 -lwinmm -lgdi32 -mno-cygwin - -mwindows -DFREEGLUT_STATIC - - -Compilation avec dll freeglut, sans cygwin - - * Pour le define, même remarque que ci-dessus - * L'ordre des bibliothèques 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é uniquement pour référence, le thème de ce billet étant de se débarrasser de Cygwin. - o Disons que ça peut servir pendant la mise au point (et encore). - - * gcc shapes.c -L. -lopengl32 -lwinmm -lgdi32 -lfreeglut - - - -Où sont les dooooocs ? - - * Freeglut est livré avec sa documentation, plus très à jour. - o Il semble qu'il y ait un problème avec la doc Glut originale. Non - seulement elle ne correspond pas forcément au fonctionnement de - Freeglut, mais de plus, son auteur (Mark Kilgard) l'a copyrighté. Sa - distribution est donc difficile. - - * Jocelyn Fréchot a entrepris une mise à 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écu ... - - * J'ai également testé la recompilation des démos de la lib Glut originelle - (paix à ses cendres). - o Rien de particulier à signaler. - - * Merci à tous les mainteneurs courageux de Freeglut, qu'on croyait morts, - mais qui bougent encore. diff --git a/freeglut/freeglut/LISEZ_MOI b/freeglut/freeglut/LISEZ_MOI deleted file mode 100644 index 2734a73..0000000 --- a/freeglut/freeglut/LISEZ_MOI +++ /dev/null @@ -1,86 +0,0 @@ -Brève Vue d'ensemble -==================== - -C'est le paquet de freeglut. - -Freeglut, le toolkit de service d'openGL ("OpenGL Utility Toolkit") libre, est censé pour être -un libre changent l'indigène à la bibliothèque de GLUT de Mark Kilgard. Il est distribué sous -un permis de modèle de X-Consortium (voyez COPIER pour des détails), de vous offrir une chance -d'employer et/ou modifier la source. - -Il se sert de bibliothèques OpenGL, GLU, GLib, et pthreads-win32. La bibliothèque ne se sert -d'aucun code de SURABONDANCE et n'est pas 100% compatible. La recompilation de code et/ou les -légères modifications pourraient être exigées pour vos applications pour fonctionner avec le -freeglut. - - -PORTS -===== - -X11 et les ports Win32 sont à une étape avançée d'alpha, qui signifie qu'elles fournissent la fonctionnalité limitée de la SURABONDANCE api 3. Il y a un cours d'en de recherche pour vérifier si le port de BeOS pourrait être facilement fait en utilisant la structure courante de freeglut. - - INSTALLATION -============ - -Voyez le dossier d'INSTALLATION. Pour le Windows: - -1)Téléchargez Freeglut.tar.gz - -2)Renommez en Freeglut.tar - -3)Décompressez avec WINZIP - -4)Dans MSVC,vous obtenez un répertoire FREEGLUT\DEBUG ou se trouve FREEGLUT.DLL - -5)Si vous n'avez pas FEEGLUT.LIB,il faut la construire: - Ouvrez FREEGLUT.DSW(C'est un workspace) - ouvrez le projet et cliquez sur "BUILD" puis "SET ACTIVE CONFIGURATION" - ajoutez "FREEGLUT-DEBUG". - -6)Pour votre propre projet,apres la compilation,appuyer sur ALT-F7.Cliquez sur LINK,puis sur - CATEGORIES et selectionnez "INPUT".Plus bas dans la fenetre,il y a un champ appelé - "ADDITIONNAL LIBRARY PATH",ajoutez:C:\MSVC\FREEGLUT\DEBUG pour que le programme trouve la - FREEGLUT.LIB. - -7)Copiez(NE PAS DEPLACER) la FREEGLUT.DLL de DEBUG vers le répertoire qui contient votre fichier - EXE. - -8)Pour une installation globale copier FREEGLUT.DLL dans C:\WINNT\SYSTEM32. - - - -CONTRIBUTION -============ - -Le bogue et les pièces rapportées absentes de dispositifs sont certainement bienvenus. Juste -comme des commentaires et des propositions de FREEGLUT api 1 soyez. Veuillez juste pour rendre -le regard de difficultés visuellement juste comme le reste du code (les étiquettes ont converti -les 4 espaces blancs). Les commentaires sont vraiment bienvenus, comme je crois qu'il ferait -beau pour des personnes nouveaux que frais à OpenGL voient comment les choses sont faites... - - -EMPLACEMENT DE WEB ET ENTRER EN CONTACT AVEC LE D'AUTEUR -======================================================== - -Le projet de Freeglut s'est déplacé au SourceForge : -http://freeglut.sourceforge.net - - -LE D'ESPOIR -=========== -Espoir vous trouvez mon travail de façon ou d'autre utile. -Pawel W. Olszta, - - -DÉPASSEMENT DU BATON==================== - -En décembre 2000, Pawel a décidé qu'il n'a plus souhaité maintenir le freeglut parce qu'il s'est -déplacé hors du champ de graphiques. J'ai offert pour succéder de lui et avoir couru le projet -depuis 2001 le 13 janv.. I'm également l'auteur et le défenseur de la suite de bibliothèque de -PLIB et du 'freeglut' ; vraiment ajustements dedans bien avec ce travail. J'espère juste que je -peux vivre jusqu'aux niveaux élevés de Pawel's. Pawel reste sur la liste active de réalisateurs. -Steve Baker - http://plib.sourceforge.net - - - diff --git a/freeglut/freeglut/NEWS b/freeglut/freeglut/NEWS deleted file mode 100644 index 149a72f..0000000 --- a/freeglut/freeglut/NEWS +++ /dev/null @@ -1,70 +0,0 @@ -Jan 16th 2000: - - First really functional release of freeglut. - - -Jan 13th 2001: - - Steve Baker takes over as maintainer of freeglut. - - -Jun ??th 2003: - - freeglut 1.4 released. - -September 29, 2003: - - freeglut 2.0.0 released. - -... - -Mar ??, 2009: - - freeglut 2.6.0 released. Changes compared to 2.4.0: - - * Tons of bug fixes - - * Added deprecated, but working Joystick API. - - * Added new constant GLUT_INIT_STATE for glutGet() to check if freeglut is - already initialized. - - * Added new API entry for full-screen mode - - void glutFullScreenToggle( void ); - - with a related new constant GLUT_FULL_SCREEN for glutGet(). - - * Added new API entry to de-initialize freeglut: - - void glutExit( void ); - - * Added more special keys: GLUT_KEY_NUM_LOCK, GLUT_KEY_BEGIN GLUT_KEY_DELETE - - * Added support for windows without captions and/or borders via two new - constants GLUT_CAPTIONLESS and GLUT_BORDERLESS for glutInitDisplayMode - (currently works for Windows only). - - * 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. glutGet() 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 ); - - with mode GLUT_MULTISAMPLE. (glutGetModeValues() currently only works for - X11) - - * Added new constant GLUT_AUX for glutSetOption() to set the number of - auxiliary buffers. The possible number of auxiliary buffers can be - queried via glutGetModeValues with mode GLUT_AUX. - - * Added support for versioned (i.e. 3.0) OpenGL contexts: New API entries - - void glutInitContextVersion( int majorVersion, int minorVersion ); - void glutInitContextFlags( int flags ); - - with related new constants GLUT_DEBUG and GLUT_FORWARD_COMPATIBLE for - the latter API entry. Added new constants GLUT_INIT_MAJOR_VERSION, - GLUT_INIT_MINOR_VERSION and GLUT_INIT_FLAGS for glutGet(). diff --git a/freeglut/freeglut/README b/freeglut/freeglut/README index 3eddc79..fb94976 100644 --- a/freeglut/freeglut/README +++ b/freeglut/freeglut/README @@ -1,77 +1,61 @@ +BRIEF OVERVIEW +============== - BRIEF OVERVIEW - ============== +This is the freeglut package. - This is the freeglut package. +Freeglut, the Free OpenGL Utility Toolkit, is meant to be a free alternative to +Mark Kilgard's GLUT library. Freeglut is free software, distributed under an +MIT/X11 style license. You are free to use, modify, and redistribute FreeGLUT +with or without modifications (see COPYING for details). - Freeglut, the Free openGL Utility Toolkit, is meant to be a free alter- - native to Mark Kilgard's GLUT library. It is distributed under an X-Consor- - tium style license (see COPYING for details), to offer you a chance to use - and/or modify the source. +PORTS +===== - It makes use of OpenGL, GLU, and pthreads-win32 libraries. The library does - not make use of any GLUT code and is not 100% compatible. Code recompilation - and/or slight modifications might be required for your applications to work - with freeglut. +Currently supported platforms: + - UNIX systems with X11 (such as GNU/Linux, FreeBSD, etc) + - MS Windows + - MacOS X with XQuartz (no native Cocoa support yet) + - Android (NDK) + - Blackberry + +Consult the platform-specific readme files for details on the level of support +and build instructions. - PORTS - ===== +INSTALLATION +============ - Both X11 and Win32 ports are in an advanced alpha stage, which means that - they provide limited functionality of GLUT API 3. A somewhat more - limited port (mostly due to limits of the OS) to Andriod is now also - available. +See README.cmake as a starting point, as well as the other README +files for further info. - INSTALLATION - ============ +CONTRIBUTING +============ - See README.cmake as a starting point, as well as the other README - files for further info. +Patches for bugfixes and new features are certainly welcome. Please send patches +to the freeglut-developer mailing list (see CONTACT below). + +Feel free to report any bugs you encounter, using our bug tracking system: +https://sourceforge.net/p/freeglut/bugs/ +Feature requests are also welcome at: +https://sourceforge.net/p/freeglut/feature-requests/ + +If your bug report needs urgent attention, please also post a message to the +aforementioned freeglut-developer mailing list, to make sure we'll see it ASAP. - CONTRIBUTING - ============ +CONTACT +======= - Bug and missing features patches are certainly welcome. Just as comments - and FREEGLUT API propositions are. - - Just please to make the fixes look visually just as the rest of the code - does (tabs converted 4 white spaces). Comments are really welcome, as I - believe it would be nice for people fresh new to OpenGL see how the things - are done... - - - WEB SITE AND CONTACTING THE AUTHOR - ================================== - - Freeglut project has moved to the SourceForge: - http://freeglut.sourceforge.net - - - THE HOPE - ======== - - Hope you find my work somehow useful. - Pawel W. Olszta, - - - PASSING THE BATON - ================= - - In late December 2000, Pawel decided that he no longer - wished to maintain freeglut because he has moved out of - the graphics field. I volunteered to take over from him - and have been running the project since Jan 13th 2001. - - I'm also the author and maintainer of the PLIB library suite - and 'freeglut' really fits in well with that work. - - I just hope I can live up to Pawel's high standards. Pawel - remains on the active developers list. - - Steve Baker - http://plib.sourceforge.net +FreeGLUT website: http://freeglut.sourceforge.net +FreeGLUT mailing lists: + - developer: https://lists.sourceforge.net/lists/listinfo/freeglut-developer + - bugs: https://lists.sourceforge.net/lists/listinfo/freeglut-bugs + - announce: https://lists.sourceforge.net/lists/listinfo/freeglut-announce + You need to subscribe before posting to any of our mailing lists. Make sure + to avoid selecting "daily digest mode" if you intend to post, so that you can + reply properly to specific messages. Also, please do not top-post, and try to + send properly formated emails (text, hard-wrapped at 72 columns, no binary or + large attachements). diff --git a/freeglut/freeglut/README.mac b/freeglut/freeglut/README.mac deleted file mode 100644 index a900ebe..0000000 --- a/freeglut/freeglut/README.mac +++ /dev/null @@ -1,33 +0,0 @@ - January 2011 -To the gentle Mac user, - -I realize that this is hardly a full explanation of how to build on a Mac, -but it will need to suffice for now. - -There was an e-mail on the "freeglut" developers mailing list titled -"Compiling Static freeglut on mac" with a datestamp of 10/12/2010 at -11:20 AM (possibly corrected for Central time, USA). Another e-mail -on the same mailing list from the same person, in reply to his original -missive, is dated 11/9/2010 at 10:03 PM. This file is an attempt to -capture the knowledge in those two e-mails. - -The author of the e-mails was trying to compile a static "freeglut" -library on Mac OSX version 10.5.8. He tried building both freeglut -versions 2.4.0 and 2.6.0 with a command ... - -./configure --disabled-shared --enable-static -make - -... and got a "non_lazy_ptr" error in both cases. He was able to fix -the problem by using the following "configure" command instead: - -./configure --disable-warnings --disable-shared --enable-static CPPFLAGS=-I/usr/X11/include -L/usr/X11/lib LDFLAGS=-I/usr/X11/include -L/usr/X11/lib -framework GLUT - - -Any further information on building "freeglut" on a Mac would be deeply -appreciated. I believe that much of the information on building it on -*nix systems also applies to the Mac. - -John F. Fay -1/22/11 - diff --git a/freeglut/freeglut/TODO b/freeglut/freeglut/TODO deleted file mode 100644 index 1afd20c..0000000 --- a/freeglut/freeglut/TODO +++ /dev/null @@ -1,107 +0,0 @@ - - The not-so-up-to-date TODO list can be found under following URL: - http://freeglut.sourceforge.net/progress.html - -Issues in Freeglut (so we don't forget): - -*fixed*(D) I'd like to change the names of the Windows target directories from names like "Debug__Win32_freeglut_static" (or something like that) to names like "DebugStatic". - -Issues that can Wait until 2.2.0: - -(1) In the Atlantis demo, under windows and with the task bar to the left of the screen, the GLUT window comes up in a position relative to the corner of the screen while the "freeglut" window comes up down and to the right of where it was the last time it was opened. - -(2) In the Atlantis demo, if you stop the animation and move the mouse around with a menu open, the whales jiggle but don't circulate. My guess is that you need a way to redisplay the menu without forcing a redisplay from the application. - -(3) In the Atlantis demo, if you bring up the menu in GLUT the animation stops; in freeglut the fish and whales wiggle without advancing. This may be another manifestation of (2). - -(4) In the Atlantis demo modified to draw a solid torus instead of a mother whale, the torus is not shaded according to the lighting. This is true with both GLUT and freeglut. With freeglut, when you bring up a menu the shading used to turn on but doesn't any longer; with GLUT it never did and still does not. Interestingly, if you change to a teapot it is shaded, but other geometric shapes are not shaded. - -*fixed*(5) The "freeglut" wire cone does not look like the GLUT wire cone. There are several differences, one of which is that the "freeglut" cone draws the base. - -*fixed*(6) With the "bluepony" demo under Windows, if you reshape the window using the mouse, the scene does not redraw until you move it with a keypress (arrow key or space bar to start the animation). Check out the "CS_VREDRAW or CS_HREDRAW" sections in MSVC help for a pointer about this. - -(7) If you compare the "bounce" demo with freeglut and GLUT, you see that the "freeglut" lights are larger and dimmer (and don't shine on the walls) than the GLUT lights. - -*fixed*(8) Large submenus in "freeglut" tend to cover their parent menus, making it difficult to get past them. This is visible in the "geoface" demo. In GLUT the menus can extend outside the window; "freeglut" should do the same thing. - -(9) In the "gliq" demo, the cones forming the ends of the arrows in the "select board" are lighted differently in "freeglut" than they are in GLUT. - -*fixed*(10) The "skyfly" demo resized my video and set it to 256 colors but didn't set it back when it was done. This is a problem with "skyfly" and not freeglut. - - -*fixed*(11) We seem to have troubles with programs that use display lists. Check out the "walker" demo and load a new curve set. If you have the debugger going while it is loading, you get the new curves; otherwise you don't. This has to do with the debugger hiding the freeglut window while the display list is being changed. - -*fixed*(12) The "fgCleanUpGlutsMess" function seems to duplicate the "fgDestroyStructure" or "fgDeinitialize" function and should probably be removed. - -*fixed*(13) The "G_LOG_DOMAIN" defined constants are never used. Should we start using them in warning and error messages or should we delete them? - -*fixed*(14) The "freeglut_internal.h" file on lines 45ff defines or undefines "G_DISABLE_ASSERT" and "G_DISABLE_CHECKS" but these are never used. Shall we start using them or should we delete them? - -*fixed*(15) P-GUIDE apparently calls the get and set window size functions repeatedly. Each time it does, the window shrinks by 2 pixels in each direction. - -(16) (for Don Heyse) We need to implement the "glutLayerGet ( GLUT_NORMAL_DAMAGED )" call. - - -(17) Also from Aleksandar Donev: can some add support for building a debugging version of freeglut to the makefiles? I have no clue how to use automake... - -(18) There is a big guess about the mouse buttons count under X11 (always 3) -- I must remember to correct the menu activation code if this shows to be invalid. - -(19) None of the bizarre input devices found in GLUT API is supported (and probably won't). - -(20) The joystick code should work fine but I haven't tested it out yet. It might not compile under FreeBSD, as I had to convert it from C++ to C and had no possibility to compile it under FreeBSD. - -(21) The menu is displayed using OpenGL, so it requires the window's contents to be refreshed at an interactive rate, which sometimes does not happen. That's why I'll consider adding optional window-system menu navigation later. For now -- extensive testing is what I believe should be done with the menu system. (Several of the GLUT demos use the menu system. John Fay has checked it out pretty well.) - -(22) Need to have own cursor shapes, so that freeglut can pass them to the windowing system, draw them using glBitmap() and/or texture mapping. The cursor shapes are very probable to be found in XFree86 sources. - -(23) Indexed color mode might work, however I have not tested it yet. glutGetColor/glutSetColor is not implemented. Again, looks like a single Xlib call, but there might be some problems with the colormap access. Need to switch into indexed color mode some day and check it out (does Mesa 3.1 work with indexed color mode?) - -(24) Overlays are not supported, but one of the GLUT conformance tests fails due to glutLayerGet( GLUT_NORMAL_DAMAGED ) returning FALSE when the window has actually been damaged. - -(25) Layers would be good for drawing the menus and mouse cursor, as they wouldn't force the application redraw to update their state. - -(26) Does the init display string work? - -(27) Is the game mode string parsed correctly? - -(28) Does the geometry need normal vectors? - -(29) The visibility/window status function is a conceptual mess. I had to peer into the GLUT source code to see what actually happens inside. It helped me a bit, but still one of the visibility tests fails. This is probably the reason for which a window covered by enlightenment status bar is marked as hidden and does not get redrawn. - -(30) GLX 1.3 spec states that glXChooseVisual() et consortes are deprecated. Should move to glXFBConfig. - -(31) Need to investigate what happens when initial window position is set to (-1,-1). GLUT specification says, that the window positioning should be left to the window system. And I do not know how to force it do so... - -(32) I was told it is wrong to have the redisplay forced in the main loop. Is that right? - -(33) Some of the tests freeze because they do not generate the glutPostRedisplay() call every frame. Again, this is somehow handled by GLUT, but I can't see how. And why. Looks like I've fixed it (or rather hacked it?) by forcing a redisplay every frame, but this is no good and kills interactiveness of my console :D - -(34) We should really implement overlays, if only for the sake of completeness. - -(35) Menus do not display in single-buffered windows, although they are active and the user can pick from them if he knows how to move the mouse exactly right. - -(36) In the "boundary.c" demo in the "advanced" directory, if the outline rendering is turned on the menu background turns black. - -(37) In the "comp.c" demo in the "advanced" directory, we find that we need a window to be defined before "glutGet ( GLUT_DISPLAY_MODE_POSSIBLE )" can be called. GLUT does not have this restriction. In "freeglut" there is a check at the beginning of the "fgSetupPixelFormat" call and a few references to "window->" later in the function. - -(38) When you get around the requirement for an existing window in "comp.c", you find that "freeglut" renders the window differently from GLUT. For starters, "freeglut" looks like it is double-buffering while GLUT looks like it is single-buffering. In 'freeglut" the background is all black while in GLUT it starts black and turns white before your eyes. - -(39) Running the "convolve" GLUT demo in the "advanced" directory (after fixing it so it doesn't terminate on error), I find that the "freeglut" version runs much more slowly than the GLUT version. I think this has to do with forcing redraws when the menu comes up. - -(40) The "genmipmap" demo runs much more slowly in "freeglut" than in GLUT (try moving a window!) and flashes the texture over the whole window instead of just the part of the window where it finally settles down. - -(41) We need to keep the "freeglut" structure current (including the GLUT action on window closure) after the last window closes. (Aleksandar Donev e-mail, 7/4/03, 5:00 PM). - -*fixed*(42) Menus need to display in their own subwindow with a special menu OpenGL rendering context. This will fix a wide range of menu-related bugs. - -*fixed*(43) We need to keep the "freeglut" structure current (including the GLUT action on window closure) after the last window closes. - -*fixed*(44) The "freeglut" wire cone differs from the GLUT wire cone. As a minimum, it draws the base where GLUT does not. I would check the solid cone as well. - -(45) The different mouse pointers (crosshair, double pointer, etc.) do not get shown. - -(46) The visibility callback is not invoked when minimizing a window. It should be. - -(47) We should add a "glutExit" call to the interface. Also a "glutGet" to tell whether it has been initialized properly. And have "freeglut" call "glutExit" before it calls "exit ()". - - From ab34d382e83776c4ea127128b5b221d28e3b56cd Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Thu, 12 Mar 2015 19:26:53 +0000 Subject: [PATCH 20/61] web page update git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1754 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/web-src/index.php | 85 ++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 32 deletions(-) diff --git a/freeglut/web-src/index.php b/freeglut/web-src/index.php index e1f6df5..b26253c 100644 --- a/freeglut/web-src/index.php +++ b/freeglut/web-src/index.php @@ -16,26 +16,55 @@ generateHeader($_SERVER['PHP_SELF']);

What?
-

FreeGLUT is a completely OpenSourced alternative to the OpenGL Utility Toolkit (GLUT) library. GLUT was originally written by Mark Kilgard to support the sample programs in the second edition OpenGL 'RedBook'. Since then, GLUT has been used in a wide variety of practical applications because it is simple, widely available and highly portable.

-

GLUT (and hence FreeGLUT) allows the user to create and manage windows containing OpenGL contexts on a wide range of platforms and also read the mouse, keyboard and joystick functions.

+ +

FreeGLUT is a free-software/open-source alternative to the OpenGL Utility +Toolkit (GLUT) library. GLUT was originally written by Mark Kilgard to support +the sample programs in the second edition OpenGL 'RedBook'. Since then, GLUT has +been used in a wide variety of practical applications because it is simple, +widely available and highly portable.

+ +

GLUT (and hence FreeGLUT) takes care of all the system-specific chores +required for creating windows, initializing OpenGL contexts, and handling input +events, to allow for trully portable OpenGL programs.

+

FreeGLUT is released under the X-Consortium license.

Why?
-

The original GLUT library seems to have been abandoned with the most recent version (3.7) dating back to August 1998. Its license does not allow anyone to distribute modified library code. This would be OK, if not for the fact that GLUT is getting old and really needs improvement. Also, GLUT's license is incompatible with some software distributions (e.g., XFree86).

+ +

The original GLUT library seems to have been abandoned with the most recent +version (3.7) dating back to August 1998. Its license does not allow anyone to +distribute modified library code. Which is really unfortunate, since GLUT is +getting old and really needs improvement. Also, GLUT's license is incompatible +with some software distributions (e.g., XFree86).

Who?
-

FreeGLUT was originally written by Pawel W. Olszta with contributions from Andreas Umbach and Steve Baker. Steve is now the official owner/maintainer of FreeGLUT.

+ +

FreeGLUT was originally written by Pawel W. Olszta with contributions from +Andreas Umbach and Steve Baker.

+ +

John F. Fay, John Tsiombikas, and Diederick C. Niehorster are the current +maintainers of the FreeGLUT project.

When?
-

Pawel started FreeGLUT development on December 1st, 1999. The project is now virtually a 100% replacement for the original GLUT with only a few departures (such as the abandonment of SGI-specific features such as the Dials&Buttons box and Dynamic Video Resolution) and a shrinking set of bugs.

-

There are some additional features such as a larger set of predefined shapes for use in applications.

+ +

Pawel started FreeGLUT development on December 1st, 1999. The project is now +virtually a 100% replacement for the original GLUT with only a few departures +(such as the abandonment of SGI-specific features such as the Dials&Buttons +box and Dynamic Video Resolution) and a shrinking set of bugs.

+ +

FreeGLUT adds some additional features over the basic GLUT functionality, +such as a larger set of predefined objects to use, the ability to run single +iterations of the event loop, or exit from it gracefully, mousewheel input +callbacks, optional OpenGL core/compatibility profile context creation, +multitouch/multi-pointer input, and support for a larger and growing set of +platforms, being just some of them.

Help out!
-

FreeGLUT 3.0 is in active development, and will feature ports to -Android and BlackBerry 10 as well as a host of other enhancements. We are looking -for developers to help out with further work on the Android and BlackBerry 10 -ports. Furthermore, ports to Cocoa/Carbon on OSX, and maybe even Wayland -are planned, along with some enhancements to the API and implementation. + +

We are looking for developers to help out with further work on the Android +and BlackBerry 10 ports. Furthermore, ports to Cocoa on OSX, and maybe even +Wayland are planned, along with some enhancements to the API and implementation.

+ See here for an overview of the major points on our todo list. You can easily help out by forking the unofficial clone of our
Testing Releases
-

- Freeglut 3.0.0 Release Candidate 2 [Released: 26 Dec 2014]
-

-

- Freeglut 3.0.0 Release Candidate 1 [Released: 29 Oct 2014]
-

-

Amongst many smaller enhancements and bugfixes, this RC includes - experimental ports to Android and BlackBerry 10 as well as other API - and implementation enhancements (e.g., move to CMake build system, - VBO and shader support for geometry). Also moved to CMake as build - system. Please try it out and give us feedback on how it worked for - you. - + will eventually become a FreeGLUT 3.1 release.

+

There are no presently active testing releases.

-
Stable Releases
-

+

Stable Releases
+

+ Freeglut 3.0.0 [Released: 7 March 2015]
Freeglut 2.8.1 [Released: 5 April 2013]
- Freeglut 2.8.0 [Released: 2 January 2012]
+ Freeglut 2.8.0 [Released: 2 January 2012]
Freeglut 2.6.0 [Released: 27 November 2009]
Freeglut 2.4.0 [Released: 9 June 2005]
Freeglut 2.2.0 [Released: 12 December 2003]
@@ -90,7 +105,13 @@ mailing list.

Prepackaged Releases
-

The FreeGLUT project does not support packaged versions of FreeGLUT excepting, of course, the tarballs distributed here. However, various members of the community have put time and effort into providing source or binary rollups, and we thank them for their efforts. Here's a list which is likely incomplete:

+ +

The FreeGLUT project does not support packaged versions of FreeGLUT +excepting, of course, the tarballs distributed here. However, various members of +the community have put time and effort into providing source or binary rollups, +and we thank them for their efforts. Here's a list which is likely +incomplete:

+