I am sponsoring this fasttrack for Stefan Teleman, and have set the
timeout for a week from now, next Thursday, January 21.
The case materials directory includes an additional document,
glut-appendix-1.txt with a list of the functions in the GLUT API.
-Alan Coopersmith- alan.coopersmith at sun.com
Sun Microsystems, Inc. - X Window System Engineering
Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2010 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
GLUT
1.2. Name of Document Author/Supplier:
Author: Calin Teleman
1.3 Date of This Document:
14 January, 2010
4. Technical Description
Introducing GLUT [ The OpenGL Utility Toolkit ] with X11 in Solaris
Stefan Teleman <stefan.teleman at sun.com>
7 January 2010
1. Summary and Motivation
GLUT [ The OpenGL Utility Toolkit ] [0] is a collection of functions
providing a standardized access to a windowing system and to
various input devices, in a platform-independent manner, and within
an OpenGL [1] Context.
The main purpose of GLUT is the avoidance of clobbering the OpenGL
namespace with device, platform and operating-system specific
functions. This platform independence comes at the expense of full
device interaction features availability, and some loss of programming
flexibility. From the FreeGLUT page:
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.
GLUT also provides general-purpose APIs simplifying some standard
OpenGL programming idioms. Absent these GLUT APIs, these idioms
would have had to be duplicated by the application programmer, for
every OpenGL application.
GLUT was originally developed and maintained by Mark Kilgard at SGI,
under a very restrictive license. The last release from SGI was GLUT
3.7, in August 1998. Due to the licensing restrictions imposed by the
canonical GLUT 3.7 license, and to the fact that it has not had a
canonical upgrade release since August 1998, the SGI GLUT releases
are not being considered for integration, and will not be discussed
further.
The GLUT API had been frozen at Version 3 since August 1998, and the
GLUT releases have been frozen at Version 3.7. According to the
OpenGL GLUT information page: [0]
The current [ GLUT ] version is 3.7.
Additional releases of the library are not anticipated.
The current version of the GLUT API is 3.
The current source code distribution is GLUT 3.7.
The FreeGLUT Project [2] is a compatible replacement for the GLUT
API V3 [ SGI GLUT 3.7 ], and is released under the MIT/X Consortium
License. The FreeGLUT Project has extended and upgraded the SGI GLUT
API version to Version 4. [4] The GLUT API Version 4 is a fully
backwards compatible superset of Version 3 of the SGI GLUT API.
The latest release from the FreeGLUT project is Version 2.6.0, and
implements the GLUT API Version 4. For the purposes of this document,
the term GLUT and FreeGLUT are used interchangeably, and refer to
the canonical releases from the FreeGLUT project.
This Case seeks Micro/Patch binding.
2. Programmatic Facilities
The SGI [ Version 3 ] GLUT API and the FreeGLUT [ Version 4 ] API are
documented in detail at [3] and [4].
A complete list of all the public interfaces exported by GLUT is
provided in Appendix 1 in the Case Materials.
Version 4 of the GLUT API provides a Standard API, available via the
freeglut_std.h header file, and an Extensions API, available via the
freeglut_ext.h header file.
Access to the Standard GLUT API is provided by the glut.h header file.
Access to the Standard And Extensions API is provided by the freeglut.h
header file.
The current GLUT API depends on the X11 Display structure. It has not
yet been ported to XCB. [5] [6]
3. Interface Considerations
GLUT imports interfaces from OpenGL [ libGL.so.1 and libGLU.so.1 ].
This is an explicit dependency: internal GLUT header files explicitly
include <GL/gl.h> and <GL/glu.h>.
GLUT does not specify a lower bound OpenGL API Version. FreeGLUT
compiles cleanly with OpenGL Version 1.5.
Additionally, GLUT imports interfaces from the following X libraries:
- libX11.so.4
- libXext.so.0
- libXi.so.5
- libXxf86vm.so.1
GLUT exports C and [ identical ] C++ interfaces.
The GLUT API Version 4 maintains backward compatibility with Version 3
of the GLUT API. This Case proposes an overall Uncommitted Stability
Classification for GLUT. It is not expected that GLUT will evolve in
incompatible ways.
The GLUT Interface Table is provided in the ARC Case Materials
directory [ glut-interface-table.txt ].
3.1. GLUT Objects
Physical Object Description
--------------- -----------
/usr/include/GL/glut.h Header file
/usr/include/GL/freeglut.h Header file
/usr/include/GL/freeglut_std.h Header file
/usr/include/GL/freeglut_ext.h Header file
/usr/lib/libglut.so.3 Shared library
/usr/lib/libglut.so -> libglut.so.3 Symbolic link
/usr/lib/${MACH64}/libglut.so.3 Shared library
/usr/lib/${MACH64}/libglut.so -> libglut.so.3 Symbolic link
/usr/share/doc/glut/html/download.html Documentation
/usr/share/doc/glut/html/freeglut.html
/usr/share/doc/glut/html/freeglut_logo.png
/usr/share/doc/glut/html/freeglut_user_interface.html
/usr/share/doc/glut/html/index.html
/usr/share/doc/glut/html/ogl_sm.png
/usr/share/doc/glut/html/progress.html
/usr/share/doc/glut/html/structure.html
/usr/share/man/man3gl/glut.3gl UNIX Manual Page
libglut.so.3 Binding SONAME
4. Documentation
Documentation in HTML format will be provided with the GLUT
integration, in the standard Solaris HTML documentation location.
A generic UNIX man page glut(3GL), pointing to the location of
the full HTML documentation will also be provided.
5. Packaging
SUNWglut - shared libraries, header files, pkg-config files, HTML
documentation, GLUT man page.
SUNWglut-demos - GLUT demos, example programs and their ancillary data.
6. References
[0] http://www.opengl.org/resources/libraries/glut/
[1] http://www.opengl.org/
[2] http://freeglut.sourceforge.net/
[3] http://www.opengl.org/resources/libraries/glut/spec3/spec3.html
[4] http://freeglut.sourceforge.net/docs/api.php
[5] http://xcb.freedesktop.org/
[6] PSARC/2010/XXX Introducing XCB with X11 in Solaris
=============================================
Interface Table for GLUT 4 [ FreeGLUT 2.6.0 ]
=============================================
Exported Interfaces:
Interface Stability Comments
===============================================================
libglut.so.3 Uncommitted GLUT API V3 +
GLUT API V4
Binding SONAME
Imported Interfaces:
Interface Interface Comments
Classification
==================================================================
libGL.so.1 Standard
libGLU.so.1 Standard
libX11.so.4 Committed
libXext.so.0 Committed
libXi.so.5 Committed
libXxf86vm.so.1 External
References:
http://www.opengl.org/
http://www.mesa3d.org/
http://freeglut.sourceforge.net/
LSARC/1995/164 Extended Visuals for OpenGL
LSARC/1996/049 OpenGL Solaris : A 3D Graphics API
LSARC/2005/109 MESA OpenGL Open Source Clone [ libGLU.so.1 ]
PSARC/2005/189 X client support for XFree86 extensions
LSARC/2005/254 OpenGL 1.5 API
LSARC/2009/066 OpenGL 3.0 API [ nVIDIA ]
LSARC/2009/259 OpenGL 3.1 API [ nVIDIA ]
LSARC/2009/569 OpenGL 3.2 API [ nVIDIA ]
LSARC/2009/666 Update libX11 to 1.3
PSARC/2008/194 Update to libXext, libXevie & libXss
PSARC/2009/303 Update libXi [ X Input Extension ] to 1.5
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
X
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open