| AMIGA AMIWIN PORT of MESA: THE OPENGL SOFTWARE EMULATION |
| ======================================================== |
| Port by Victor Ng-Thow-Hing (victorng@dgp.toronto.edu) |
| Original Author (Brian Paul (brianp@ssec.wisc.edu) |
| |
| Dec.1 , 1995: Port of release Mesa 1.2.5 |
| - Modifications made to minimize changes to Mesa distribution. |
| |
| Nov.25, 1995: Port of release Mesa 1.2.4 |
| |
| |
| HISTORY |
| ======= |
| As a 3D graphics progammer, I was increasingly frustrated to see OpenGL |
| appearing on so many platforms EXCEPT the Amiga. Up to now, the task |
| of porting OpenGL directly from native Amiga drawing routines seemed like |
| a daunting task. However, two important events made this port possible. |
| |
| First of all, Brian Paul wrote Mesa, the OpenGL software emulator that |
| can be found on many platforms - except the Amiga and Atari (who cares |
| about the latter!). This was pretty ironic considering that Mesa was |
| originally prototyped on an Amiga! The second great event was when |
| Holger Kruse developed AmiWin, the X11R6 server for the Amiga (definitely |
| register for this great piece of software) and released a development kit |
| so one could compile X programs with SAS/C. |
| |
| Since Mesa had X routines as its primitive drawing operations, this made |
| a marriage of Mesa and Amiwin feasible. I copied over the sources from |
| an ftp site, played with the code, wrote some Smakefiles, and voila, |
| I had OpenGL programs displaying on my Amiga. |
| |
| Although the speed is nothing to be impressed about, this port can be |
| potentially useful to those who want to quickly test their code in |
| wireframe or perhaps learn more about programming with the OpenGL API. |
| |
| I hope Amiga developers will continue to write excellent software for |
| their machine, especially more X clients for Amiwin. If you have any |
| solutions so some of my problems in the porting notes, please send me |
| some email! |
| |
| See you around, |
| Vic. |
| |
| HOW TO CREATE THE LIBRARIES AND SAMPLE CODE |
| =========================================== |
| |
| Just run the shell script mklib.amiwin in the mesa directory. This will |
| make all the libraries and copy them into the mesa/lib directory. If you |
| don't want to compile everything, just go to the desired directory and |
| type smake in that directory. |
| |
| Change any of the variables in the smakefiles as necessary. You will REQUIRE |
| the Amiwin development kit to compile these libraries since you need X11.LIB |
| and the shareable X libraries. Some examples require the AmiTCP4.0 |
| net.lib static link library and related header files for unix related |
| header files and functions like sleep(). |
| |
| HOW TO USE THE MESA LIBRARIES |
| ============================= |
| |
| Study the Smakefiles in the demos, samples and book directories for the |
| proper SAS/C options and linkable libraries to use. Basically aux calls |
| require Mesaaux.LIB, gl calls require MesaGL.LIB, glu calls MesaGLU.LIB, |
| tk calls Mesatk.LIB. There is a preliminary port of MesaGLUT.LIB toolkit |
| available in the lib directory with the other Mesa libraries. However, |
| it seems to cause crashes on some of the sample code. Someone else may want |
| to attempt a more stable port. |
| |
| PORTING NOTES TO AMIWIN |
| ======================= |
| |
| My strategy of porting was to leave as much of the code untouched as |
| possible. I surrounded any amiga specific changes with |
| #ifdef AMIWIN ... #endif or #ifndef AMIWIN ... #endif preprocessor |
| symbols. The code was ported on an Amiga 2000, with Fusion 40 accelerator |
| and a Picasso II graphics card. The SAS/C 6.56 compiler was used, with |
| the AmiWin 2.16 X development kit. |
| |
| All compilations were done for a 68040 CPU with 68882 math coprocessor for |
| maximum speed. Please edit the smakefile for other compilers. |
| I wrote smakefiles for the directories I ported. I omitted the Windows |
| and Widgets directories. The former is for MS Windows and the latter |
| requires Motif, which is not easily available for the Amiga. |
| |
| Here are the changes I did per directory: |
| |
| * mesa |
| Nov. 25, 1995 v 1.2.4 |
| - added a mklib.amiwin shell script that will make all the libraries and |
| sample code for Mesa |
| - created this readme file: readme.AMIGA |
| |
| * mesa/include |
| Dec. 1, 1995 v 1.2.5 |
| - added the following to GL/xmesa.h |
| #ifdef AMIWIN |
| #include <pragmas/xlib_pragmas.h> |
| extern struct Library *XLibBase; |
| #endif |
| NET CHANGE: xmesa.h |
| |
| * mesa/src |
| Nov. 25, 1995 v 1.2.4 |
| - added the necessary pragma calls for X functions to the following: |
| xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c, glx.c |
| This prevents undefined symbols errors during the linking phase for |
| X library calls |
| - created smakefile |
| Dec. 1, 1995 v 1.2.5 |
| - removed AMIWIN includes from xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c, |
| glx.c since they are now defined in include/GL/xmesa.h |
| NET CHANGE: smakefile |
| |
| * mesa/src-tk |
| Nov. 25, 1995 v 1.2.4 |
| - added the necessary pragma calls for X functions to the following: |
| private.h |
| - created smakefile |
| Dec. 1, 1995 v 1.2.5 |
| - removed AMIWIN includes from private.h since it is now defined in |
| include/GL/xmesa.h |
| NET CHANGE: smakefile |
| |
| * mesa/src-glu |
| Nov. 25, 1995 v 1.2.4 |
| - created smakefile |
| NET CHANGE: smakefile |
| |
| * mesa/src-aux |
| Nov. 25, 1995 v 1.2.4 |
| - added the necessary pragma calls for X functions to the following: |
| glaux.c |
| - created smakefile |
| NET CHANGE: glaux.c, smakefile |
| |
| * mesa/demos |
| Nov. 25, 1995 v 1.2.4 |
| - added the necessary pragma calls for X functions to the following: |
| xdemo.c, glxdemo.c, offset.c |
| - created smakefile |
| - put #ifndef AMIWIN ... #endif around sleep() calls in xdemo.c since |
| they are not part of AmigaDOS. |
| Dec. 1, 1995 v 1.2.5 |
| - removed AMIWIN defines from xdemo.c, glxdemo.c, offset.c since |
| already defined in include/GL/xmesa.h |
| - modified Smakefile to include header and includes from the AmiTCP4.0 |
| net.lib linkable library to provide unix-compatible sys/time.h and |
| the sleep() function |
| - removed AMIWIN defines in xdemo.c since sleep() now defined |
| NET CHANGE: smakefile |
| |
| * mesa/samples |
| Nov. 25, 1995 v 1.2.4 |
| - added the necessary pragma calls for X functions to the following: |
| oglinfo.c |
| - created smakefile |
| - put #ifndef AMIWIN ... #endif around sleep() in blendxor.c |
| - removed olympic from smakefile targets since <sys/time.h> not defined |
| Dec. 1, 1995 v 1.2.5 |
| - removed AMIWIN defines from oglinfo.c, since already defined in |
| include/GL/xmesa.h |
| - modified Smakefile to include header and includes from the AmiTCP4.0 |
| net.lib linkable library to provide unix-compatible sys/time.h and |
| the sleep() function |
| - removed AMIWIN defines in blendxor.c for sleep() |
| - added AMIWIN defines around _MACHTEN_ in olympic.c since xrandom() |
| functions are not defined in any libraries |
| - added olympic back into the Smakefile targets |
| NET CHANGE: smakefile, olympic.c |
| |
| * mesa/book |
| Nov. 25, 1995 v 1.2.4 |
| - created smakefile |
| - removed accpersp and dof from smakefile targets since the SAS/C compile seems to |
| confuse the near,far variables with near/far memory models. |
| NET CHANGE: smakefile |
| |
| * mesa/windows |
| Dec. 1, 1995 v 1.2.5 |
| - Removed directory to save space since this is only needed for Windows based |
| machines. |