home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / mesa-1.2.8 / readme.amiga < prev    next >
Text File  |  1996-05-27  |  7KB  |  209 lines

  1. Short:    3D library, OpenGL based, Amiga v1.0
  2. Uploader: d94sz@efd.lth.se (Stefan Zivkovic)
  3. Author:   brianp@ssec.wisc.edu (BrianP) Amiga Port: d94sz@efd.lth.se (Stefan Zivkovic)
  4. Type:     dev/c
  5. Requires: System v39, SAS C Compiler
  6. Version:  Mesa v1.2.8 Amiga version 1.0
  7.  
  8.  
  9.  
  10.               The Mesa 3-D graphics library
  11.  
  12.                   Version 1.2.8
  13.  
  14.             Copyright (C) 1995-1996  Brian Paul
  15.  
  16.  
  17.  
  18. Introduction
  19. ============
  20.  
  21. Mesa is a 3-D graphics library with an API which is very similar to that
  22. of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax
  23. or state machine, it is being used with authorization from Silicon Graphics,
  24. Inc.  However, the author makes no claim that Mesa is in any way a
  25. compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
  26. Those who want a licensed implementation of OpenGL should contact a licensed
  27. vendor.  This software is distributed under the terms of the GNU Library
  28. General Public License, see the LICENSE file for details.
  29.  
  30. * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
  31.  
  32. Miscellaneous
  33. =============
  34.  
  35. There is a Amiga Mesa WWW page:  http://www.efd.lth.se/~d94sz/amesa
  36. and the orginal  Mesa WWW page:  http://www.ssec.wisc.edu/~brianp/Mesa.html
  37.  
  38.  
  39. Since the OpenGL API is used, OpenGL documentation can serve as the
  40. documentation for Mesa's core functions.  Here are a few sources:
  41.  
  42.   Man pages:    http://www.digital.com:80/pub/doc/opengl/
  43.   Spec doc:     http://www.sgi.com/Technology/openGL/glspec/glspec.html
  44.  
  45.  
  46. Author
  47. ======
  48.  
  49. Brian Paul
  50. Space Science and Engineering Center
  51. University of Wisconsin - Madison
  52. 1225 W. Dayton St.
  53. Madison, WI  53706
  54.  
  55. brianp@ssec.wisc.edu
  56.  
  57.  
  58. AMIGA PORT of MESA: THE OPENGL SOFTWARE EMULATION by Stefan Zivkovic
  59. ====================================================================
  60. When I first read about OPENGL in the summer of 1995 I was happy and filled with
  61. joy. A few days later I surfed to the mesa homepage but only to discover that 
  62. there was no Amiga version. In the beginning of 1996 someone released a AMIWIN
  63. version so I took the archive home to try it out, but it stayed packed on my HD.
  64. One day when I was home and poking around with my HD I saw the archive and
  65. started to try to make it work. Without luck as it seemed that you needed 
  66. the AMIWIN Includes and LIBFILES. But I also discovered that it was possible
  67. to port it with not to much effort (WRONG THERE) so I begun.
  68.  
  69. For the Amiga there is only three important files + one directory.
  70.  
  71. src/Amigamesa.c        The mesa GL Amiga implementation 
  72.             (ddsample.c with some Amiga code)
  73. src-tk/Awindow.c     The tk (and aux) machine specific code)
  74. include/GL/Amigamesa.h     The prototypes for Amigamesa
  75.  
  76. Amiga/#?
  77.  
  78.  
  79. Compiling
  80. =========
  81. Just execute mklib.amiga
  82.  
  83.  
  84. About the code.
  85. ===============
  86. The common scoptions file is in /Amiga
  87.  
  88. In /Amiga there is previews of files to the shared-library version
  89. (This don't work yet but should give you an idea of how to use it)
  90.  
  91. In /Amiga/Examles there is some amiga-demo codes. 
  92.  
  93. The Code is compiled with cpu=020 math=ieee 
  94. If you would like it different then use the /Amiga/scoptions and if you change
  95. the math you have to change it to link with it in all smakefile
  96.  
  97. All pen allocations are made with obtain best pen. So if you alloc 256 pens
  98. in a 2-depth screen your will loose some colour but the code should work.
  99.  
  100. In this state it only renders on a window on a up-to 256 col display but I
  101. have planes to port it to CyberGFX the problem is that I don't own a gfx-card
  102. so this is very low on my priority list, this could change if I had one :)
  103.  
  104. all tk actions in tkExec are not finished.
  105. but most of them is
  106.  
  107. Most of the examples work.
  108.  
  109. etc. etc.
  110.  
  111. Write your own OpenGL code
  112. ==========================
  113. 1. For a easy start look at the examples in book and modify them
  114.  
  115. until The shared library is ready you have to define AMIGALIB when
  116. using <GL/gl.h>
  117.  
  118. 2. For a better amigaproggy just open a window (on your favourite screen) and
  119.    add a few lines in your source:
  120.  
  121. -----------------------------------------------------------------------------
  122. /* ADD where you want it  */
  123. #include <GL/gl.h>
  124.  
  125. Init()       /* sets up viewport and projections */
  126.   {
  127.   glMatrixMode (GL_PROJECTION);    /*  prepare for and then */ 
  128.   glLoadIdentity ();           /*  define the projection */
  129.   glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);/*  transformation */
  130.   glMatrixMode (GL_MODELVIEW);    /*  back to modelview matrix*/
  131.   glViewport (0, 0, 200, 200);    /*  define the viewport        */
  132. }   /*        ^  ^  ^^^  ^^^--- The size of the mesa/openGL window  */
  133.    
  134.  
  135.  
  136. /* ADD In after you opened your window */
  137.  
  138. struct amigamesa_context *glcont;
  139. glcont=AmigaMesaCreateContext(My window pointer,GL_FALSE,GL_FALSE);  
  140. /*                               your windowprt,RGB-mode,doublebuffered */ 
  141. if (glcont)
  142.  {
  143.  AmigaMesaMakeCurrent(glcont);
  144.  Init();
  145.  /* All your ourrage gl comands */
  146.  /*handle_window_events(test_window);  or whatever */
  147.  AmigaMesaDestroyContext(glcont);
  148. }
  149.  
  150. /* Don't forget to call glViewport() when you resize the window */
  151. ------------------------------------------------------------------------------
  152. if you set doublebuff to GL_TRUE then you just switch buffer with
  153. AmigaMesaSwapBuffers();
  154.  
  155. For more info of the internal you can check the files
  156.   src/Amigamesa.c and include/GL/Amigamesa.h for tk check src-tk/Awindow.c
  157.  
  158. LATEST VERSION:
  159. ===============
  160.  
  161. http://www.efd.lth.se/~d94sz/amesa
  162.  
  163.  
  164. FUTURE:
  165. =======
  166. The API will probably change a little.( Long names -> shorter ex
  167.            AmigaMesaDestroyContext renames to MesaDestroyContext...)
  168. Now GLDouble is float due to shared library registers and that's not good.
  169. A shared library would be nice. (I have started)
  170. Faster and better. (I have a few ideas)
  171. CyberGFX support. (I don't have CyberGFX myself any offer to
  172.                    give me one would result in CyberGFX support :)
  173.  
  174. HISTORY:
  175. ========
  176.       
  177. Release:
  178. 0.8 This code worked with Mesa 1.2.6 and all makefiles also.
  179.     Due to when I released it Mesa 1.2.7 was released and some changes was made
  180.     it didn't work.
  181.  
  182. 0.9 Makefiles is remapped to work with Mesa 1.2.7.
  183.     Double buffering works.
  184.     Implemented fast_poly_draw (big speed improvement).
  185.     tkExec a few more tests were done. (right & middle mousebutton is not
  186.     implemented)
  187.  
  188. 1.0 I've put a common scoption file in /Amiga (thanks to Kamil Iskra).
  189.     Due to the common scoptions you could change CPU and math more easy ,and
  190.     compiler options set to default math=ieee, cpu=020 so that it works on 
  191.     1200's and up 
  192.     Many bugfixes (thanks to Daniel Jönsson).
  193.     Have fixed the smakefile name collision with AMIWIN version.
  194.     Mesa 1.2.8 Fixed.
  195.     Spellcorrection of the docs were made by Peter Sandén.
  196.     All tk's windows are opened on a pubscreen named "MESA" if it exists.
  197.  
  198. Please contact me with suggestions and additional info. 
  199. You can reach me at: 
  200.  
  201. d94sz@efd.lth.se
  202.  
  203. Or mail:
  204.  
  205. Stefan Zivkovic
  206. Kämnärsv. 2:216
  207. 226 45 LUND
  208. +46 46 396997
  209.