home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2001 January / LCD_01_2001.iso / develop / tinylib041 / tiny / readme < prev   
Encoding:
Text File  |  1999-04-10  |  5.0 KB  |  149 lines

  1. TinyGL 0.2 (c) 1997,1998,1999 Fabrice Bellard.
  2.  
  3. General Description:
  4. --------------------
  5.  
  6. TinyGL is intended to be a very small implementation of a subset of
  7. OpenGL* for embedded systems or games. It is a software only
  8. implementation. Only the main OpenGL calls are implemented. All the
  9. calls I considered not important are simply *not implemented*.
  10.  
  11. The main strength of TinyGL is that it is fast and simple because it
  12. has not to be exactly compatible with OpenGL. In particular, the
  13. texture mapping and the geometrical transformations are very fast.
  14.  
  15. The main features of TinyGL are:
  16.  
  17. - Header compatible with OpenGL (the headers are adapted from the very good
  18. Mesa by Brian Paul et al.)
  19.  
  20. - Zlib-like licence for easy integration in commercial designs (read
  21. the LICENCE file).
  22.  
  23. - Subset of GLX for easy testing with X Window.
  24.  
  25. - Subset of BGLView under BeOS.
  26.  
  27. - OpenGL like lightening.
  28.  
  29. - Complete OpenGL selection mode handling for object picking.
  30.  
  31. - 16 bit Z buffer. 16 bit RGB display. High speed dithering to
  32. paletted 8 bits if needed. High speed conversion to 24 bit packed
  33. pixel or 32 bit RGBA.
  34.  
  35. - Fast Gouraud shadding optimized for 16 bit RGB.
  36.  
  37. - Fast texture mapping capabilities, with perspective correction and
  38. texture objects.
  39.  
  40. - 32 bit float only arithmetic.
  41.  
  42. - Very small: compiled code size of about 40 kB on x86. The file
  43.   src/zfeatures.h can be used to remove some unused features from
  44.   TinyGL.
  45.  
  46. - C sources for GCC on 32/64 bit architectures. It has been tested
  47. succesfully on x86-Linux and sparc-Solaris.
  48.  
  49. Examples:
  50. ---------
  51.  
  52. I took two simple examples from the Mesa package to test the main
  53. functions of TinyGL. You can link them to either TinyGL, Mesa or any
  54. other OpenGL/GLX implementation.
  55.  
  56. - The first example (texobj) illustrates the use of texture
  57. objects. Its shows the speed of TinyGL in this case.
  58.  
  59. - The second example (glutmech) comes from the GLUT packages. It is
  60. much bigger and slower because it uses the lightening. I have just
  61. included some GLU functions and suppressed the GLUT related code to
  62. make it work. It shows the display list handling of TinyGL in
  63. particular. You can look at the source code to learn the keys to move
  64. the robot. The key 't' toggles between shaded rendering and wire
  65. frame.
  66.  
  67. - You can download and compile the VReng project to see that TinyGL
  68. has been successfully used in a big project
  69. (http://www-inf.enst.fr/vreng).
  70.  
  71. Architecture:
  72. -------------
  73.  
  74. TinyGL is made up four main modules:
  75.  
  76. - Mathematical routines (zmath).
  77.  
  78. - OpenGL-like emulation (zgl).
  79.  
  80. - Z buffer and rasterisation (zbuffer).
  81.  
  82. - GLX interface (zglx).
  83.  
  84. To use TinyGL in an embedded system, you should look at the GLX layer
  85. and modify it to suit your need. Adding a more user friendly
  86. developper layer (as in Mesa) may be useful.
  87.  
  88. Notes - limitations:
  89. --------------------
  90.  
  91. - See the file 'LIMITATIONS' to see the current functions supported by the API.
  92.  
  93. - The multithreading could be easily implemented since no global state
  94. is maintainted. The library gets the current context with a function
  95. which can be modified.
  96.  
  97. - The lightening is not very fast. I supposed that in most games the
  98. lightening is computed by the 3D engine.
  99.  
  100. - Some changes are needed for 64 bit pointers for the handling of
  101. arrays of float with the GLParam union.
  102.  
  103. - List sharing is partialy supported in the source, but not by the
  104. current TinyGLX implementation (is it really useful ?).
  105.  
  106. - No user clipping planes are supported.
  107.  
  108. - No color index mode (no longer useful !)
  109.  
  110. - The mipmapping is not implemented.
  111.  
  112. - The perspecture correction in the mapping code does not use W but
  113. 1/Z. In any 'normal scene' it should work.
  114.  
  115. - The resizing of the viewport in TinyGLX ensures that the width and
  116. the height are multiples of 4. This is not optimal because some pixels
  117. of the window may not be refreshed.
  118.  
  119. Why ?
  120. -----
  121.  
  122. TinyGL was developped as a student project for a Virtual Reality
  123. network system called VReng (see the VReng home page at
  124. http://www-inf.enst.fr/vreng).
  125.  
  126. At that time (January 1997), my initial project was to write my own 3D
  127. rasterizer based on some old sources I wrote. But I realized that it
  128. would be better to use OpenGL to work on any platform. My problem was
  129. that I wanted to use texture mapping which was (and is still) quite
  130. slower on many software OpenGL implementation. I could have modified
  131. Mesa to suit my needs, but I really wanted to use my old sources for
  132. that project. 
  133.  
  134. I finally decided to use the same syntax as OpenGL but with my own
  135. libraries, thinking that later it could ease the porting of VReng to
  136. OpenGL.
  137.  
  138. Now VReng is at last compatible with OpenGL, and I managed to patch
  139. TinyGL so that VReng can still work with it without any modifications.
  140.  
  141. Since TinyGL may be useful for some people, especially in the world of
  142. embedded designs, I decided to release it 'as is', otherwise, it would
  143. have been lost on my hard disk !
  144.  
  145. ------------------------------------------------------------------------------
  146. * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
  147. ------------------------------------------------------------------------------
  148. Fabrice Bellard (bellard@email.enst.fr - http://www-stud.enst.fr/~bellard).
  149.