glut.man
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:12k
源码类别:

GIS编程

开发平台:

Visual C++

  1. ."
  2. ." Copyright (c) Mark J. Kilgard, 1996.
  3. ."
  4. .TH glut 3GLUT "3.7" "GLUT" "GLUT"
  5. .SH NAME
  6. glut - an introduction to the OpenGL Utility Toolkit
  7. .SH SYNOPSIS
  8. .nf
  9. .LP
  10. #include <GL/glut.h>
  11. .fi
  12. .SH DESCRIPTION
  13. The OpenGL Utility Toolkit (GLUT) is a programming interface with ANSI C and FORTRAN bindings for writing
  14. window system independent OpenGL programs. The toolkit supports the following functionality: 
  15. .IP
  16. Multiple windows for OpenGL rendering. 
  17. .IP
  18. Callback driven event processing. 
  19. .IP
  20. Sophisticated input devices. 
  21. .IP
  22. An ``idle'' routine and timers. 
  23. .IP
  24. A simple, cascading pop-up menu facility. 
  25. .IP
  26. Utility routines to generate various solid and wire frame objects. 
  27. .IP
  28. Support for bitmap and stroke fonts. 
  29. .IP
  30. Miscellaneous window management functions, including managing overlays. 
  31. .LP
  32. An ANSI C implementation of GLUT for the X Window System has been
  33. implemented by the author. Windows NT and OS/2 versions of GLUT are
  34. also available.
  35. .SH BACKGROUND
  36. One of the major accomplishments in the specification of OpenGL
  37. was the isolation of window system dependencies from OpenGL's
  38. rendering model. The result is that OpenGL is window system independent.
  39. Window system operations such as the creation of a rendering window and
  40. the handling of window system events are left to the native window system
  41. to define. Necessary interactions between OpenGL and the window system
  42. such as creating and binding an OpenGL context to a window are described
  43. separately from the OpenGL specification in a window system dependent
  44. specification. For example, the GLX specification describes the standard
  45. by which OpenGL interacts with the X Window System. 
  46. The predecessor to OpenGL is IRIS GL. Unlike OpenGL, IRIS GL
  47. does specify how rendering windows are created and manipulated. IRIS
  48. GL's windowing interface is reasonably popular largely because it is simple
  49. to use. IRIS GL programmers can worry about graphics programming
  50. without needing to be an expert in programming the native window system.
  51. Experience also demonstrated that IRIS GL's windowing interface was
  52. high-level enough that it could be retargeted to different window systems.
  53. Silicon Graphics migrated from NeWS to the X Window System without
  54. any major changes to IRIS GL's basic windowing interface. 
  55. Removing window system operations from OpenGL is a sound decision
  56. because it allows the OpenGL graphics system to be retargeted to various
  57. systems including powerful but expensive graphics workstations as well as
  58. mass-production graphics systems like video games, set-top boxes for
  59. interactive television, and PCs. 
  60. Unfortunately, the lack of a window system interface for OpenGL is a gap
  61. in OpenGL's utility. Learning native window system APIs such as the X
  62. Window System's Xlib or Motif can be daunting. Even those
  63. familiar with native window system APIs need to understand the interface
  64. that binds OpenGL to the native window system. And when an OpenGL
  65. program is written using the native window system interface, despite the
  66. portability of the program's OpenGL rendering code, the program itself
  67. will be window system dependent. 
  68. Testing and documenting OpenGL's functionality lead to the development
  69. of the tk and aux toolkits. The aux toolkit is used in the examples found in
  70. the OpenGL Programming Guide. Unfortunately, aux has numerous
  71. limitations and its utility is largely limited to toy programs. The tk library
  72. has more functionality than aux but was developed in an ad hoc fashion and
  73. still lacks much important functionality that IRIS GL programmers expect,
  74. like pop-up menus and overlays. 
  75. GLUT is designed to fill the need for a window system independent
  76. programming interface for OpenGL programs. The interface is designed to
  77. be simple yet still meet the needs of useful OpenGL programs. Features
  78. from the IRIS GL, aux, and tk interfaces are included to make it easy for
  79. programmers used to these interfaces to develop programs for GLUT. 
  80. .SH PHILOSPHY
  81. GLUT simplifies the implementation of programs using OpenGL
  82. rendering. The GLUT application programming interface (API) requires
  83. very few routines to display a graphics scene rendered using OpenGL. The
  84. GLUT API (like the OpenGL API) is stateful. Most initial GLUT state is
  85. defined and the initial state is reasonable for simple programs. 
  86. The GLUT routines also take relatively few parameters. No pointers are
  87. returned. The only pointers passed into GLUT are pointers to character
  88. strings (all strings passed to GLUT are copied, not referenced) and opaque
  89. font handles. 
  90. The GLUT API is (as much as reasonable) window system independent. For
  91. this reason, GLUT does not return any native window system handles,
  92. pointers, or other data structures. More subtle window system dependencies
  93. such as reliance on window system dependent fonts are avoided by GLUT;
  94. instead, GLUT supplies its own (limited) set of fonts. 
  95. For programming ease, GLUT provides a simple menu sub-API. While the
  96. menuing support is designed to be implemented as pop-up menus, GLUT
  97. gives window system leeway to support the menu functionality in another
  98. manner (pull-down menus for example). 
  99. Two of the most important pieces of GLUT state are the current window
  100. and current menu. Most window and menu routines affect the current
  101. window or menu respectively. Most callbacks implicitly set the current
  102. window and menu to the appropriate window or menu responsible for the
  103. callback. GLUT is designed so that a program with only a single window
  104. and/or menu will not need to keep track of any window or menu identifiers.
  105. This greatly simplifies very simple GLUT programs. 
  106. GLUT is designed for simple to moderately complex programs focused on
  107. OpenGL rendering. GLUT implements its own event loop. For this reason,
  108. mixing GLUT with other APIs that demand their own event handling
  109. structure may be difficult. The advantage of a builtin event dispatch loop is
  110. simplicity. 
  111. GLUT contains routines for rendering fonts and geometric objects, however
  112. GLUT makes no claims on the OpenGL display list name space. For this
  113. reason, none of the GLUT rendering routines use OpenGL display lists. It is
  114. up to the GLUT programmer to compile the output from GLUT rendering
  115. routines into display lists if this is desired. 
  116. GLUT routines are logically organized into several sub-APIs according to
  117. their functionality. The sub-APIs are: 
  118. .IP Initialization. 
  119. Command line processing, window system initialization, and initial
  120. window creation state are controlled by these routines. 
  121. .IP "Beginning Event Processing."
  122. This routine enters GLUT's event processing loop. This routine never
  123. returns, and it continuously calls GLUT callbacks as necessary. 
  124. .IP "Window Management."
  125. These routines create and control windows. 
  126. .IP "Overlay Management."
  127. These routines establish and manage overlays for windows. 
  128. .IP "Menu Management."
  129. These routines create and control pop-up menus. 
  130. .IP "Callback Registration."
  131. These routines register callbacks to be called by the GLUT event
  132. processing loop. 
  133. .IP "Color Index Colormap Management."
  134. These routines allow the manipulation of color index colormaps for
  135. windows. 
  136. .IP "State Retrieval."
  137. These routines allows programs to retrieve state from GLUT. 
  138. .IP "Font Rendering."
  139. These routines allow rendering of stroke and bitmap fonts. 
  140. .IP "Geometric Shape Rendering."
  141. These routines allow the rendering of 3D geometric objects including
  142. spheres, cones, icosahedrons, and teapots. 
  143. .SH CONVENTIONS
  144. GLUT window and screen coordinates are expressed in pixels. The
  145. upper left hand corner of the screen or a window is (0,0). X coordinates
  146. increase in a rightward direction; Y coordinates increase in a
  147. downward direction. Note: This is inconsistent with OpenGL's
  148. coordinate scheme that generally considers the lower left hand
  149. coordinate of a window to be at (0,0) but is consistent with most
  150. popular window systems. 
  151. Integer identifiers in GLUT begin with one, not zero. So window
  152. identifiers, menu identifiers, and menu item indexes are based from
  153. one, not zero. 
  154. In GLUT's ANSI C binding, for most routines, basic types (int,
  155. char*) are used as parameters. In routines where the parameters are
  156. directly passed to OpenGL routines, OpenGL types (GLfloat) are
  157. used. 
  158. The header files for GLUT should be included in GLUT programs
  159. with the following include directive: 
  160. .nf
  161. .LP
  162. #include <GL/glut.h>
  163. .fi
  164. .LP
  165. Because a very large window system software vendor (who will
  166. remain nameless) has an apparent inability to appreciate that
  167. OpenGL's API is independent of their window system API, portable
  168. ANSI C GLUT programs should not directly include <GL/gl.h> or
  169. <GL/glu.h>. Instead, ANSI C GLUT programs should rely on
  170. <GL/glut.h> to include the necessary OpenGL and GLU related
  171. header files. 
  172. The ANSI C GLUT library archive is typically named libglut.a on
  173. Unix systems. GLUT programs need to link with the system's OpenGL
  174. and GLUT libraries (and any libraries these libraries potentially
  175. depend on). A set of window system dependent libraries may also be
  176. necessary for linking GLUT programs. For example, programs using
  177. the X11 GLUT implementation typically need to link with Xlib, the X
  178. extension library, possibly the X Input extension library, the X
  179. miscellaneous utilities library, and the math library. An example
  180. X11/Unix compile line would look like: 
  181. .nf
  182. .LP
  183. cc -o foo foo.c -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm
  184. .fi
  185. .SH SEE ALSO
  186. glutAddMenuEntry, glutAddSubMenu, glutAttachMenu, glutBitmapCharacter,
  187. glutBitmapWidth, glutButtonBoxFunc, glutChangeToMenuEntry,
  188. glutChangeToSubMenu, glutCopyColormap, glutCreateMenu,
  189. glutCreateSubWindow, glutCreateWindow, glutDestroyMenu,
  190. glutDestroyWindow, glutDeviceGet, glutDialsFunc, glutDisplayFunc,
  191. glutEntryFunc, glutEstablishOverlay, glutExtensionSupported,
  192. glutFullScreen, glutGet, glutGetColor, glutGetModifiers, glutIdleFunc,
  193. glutInit, glutInitDisplayMode, glutInitWindowPosition,
  194. glutKeyboardFunc, glutLayerGet, glutMainLoop, glutMenuStatusFunc,
  195. glutMotionFunc, glutMouseFunc, glutOverlayDisplayFunc, glutPopWindow,
  196. glutPositionWindow, glutPostOverlayRedisplay, glutPostRedisplay,
  197. glutRemoveMenuItem, glutRemoveOverlay, glutReshapeFunc,
  198. glutReshapeWindow, glutSetColor, glutSetCursor, glutSetMenu,
  199. glutSetWindow, glutSetWindowTitle, glutShowOverlay, glutShowWindow,
  200. glutSolidCone, glutSolidCube, glutSolidDodecahedron,
  201. glutSolidIcosahedron, glutSolidOctahedron, glutSolidSphere,
  202. glutSolidTeapot, glutSolidTetrahedron, glutSolidTorus,
  203. glutSpaceballButtonFunc, glutSpaceballMotionFunc,
  204. glutSpaceballRotateFunc, glutSpecialFunc, glutStrokeCharacter,
  205. glutStrokeWidth, glutSwapBuffers, glutTabletButtonFunc,
  206. glutTabletMotionFunc, glutTimerFunc, glutUseLayer, glutVisibilityFunc,
  207. .SH REFERENCES
  208. Mark Kilgard, fIProgramming OpenGL for the X Window SystemfP, Addison-Wesley, ISBN 0-201-48359-9, 1996.
  209. Mark Kilgard, fIThe OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3fP (the official GLUT specification).
  210. .SH WEB REFERENCES
  211. Main GLUT page
  212. .br
  213. http://reality.sgi.com/mjk/glut3/glut3.html
  214. GLUT Frequently Asked Question list
  215. .br
  216. http://reality.sgi.com/mjk/glut3/glut-faq.html
  217. The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3
  218. .br
  219. http://reality.sgi.com/mjk/spec3/spec3.html
  220. .br
  221. http://reality.sgi.com/mjk/glut3/glut-3.spec.ps.gz
  222. OpenGL and X: An OpenGL Toolkit article (PostScript)
  223. .br
  224. http://reality.sgi.com/mjk/glut3/glut.column1.ps.gz
  225. .SH AUTHOR
  226. Mark J. Kilgard (mjk@nvidia.com)