
AllegroGL FAQ
=============

This is the AllegroGL Frequenly Asked Questions document. It contains
answers to some of the questions which have been repeatedly asked by
users of AllegroGL. The collection of these questions/answers was taken
mainly from the nice people in the #allegro channel (EFNet) and the
AllegroGL mailing list.

Documentation you should read:
 The Allegro FAQ - http://www.talula.demon.co.uk/allegro/faq.html
 The various OpenGL FAQs 
	- http://www.opengl.org/developers/faqs/technical.html
	- http://www.3dgamedev.com/resources/openglfaq.txt
	- http://www.sgi.com/software/opengl/faq.html
	- http://www.faqs.org/faqs/graphics/opengl-faq/


Table of Contents:
------------------

- License
- Installation and Configuration
- AllegroGL and MSVC
- AllegroGL and Mingw
- AllegroGL and Windows
- AllegroGL and Linux/X
- Allegro/AllegroGL and OpenGL



License
-------

Q: What is the license of AllegroGL?

A: It is double licensed under GPL and zlib.


Q: So is AllegroGL GPL? Can I use it without open sourcing my own code?

A: No, it is not GPL. You just can choose to use it with the GPL license, in
   which case you are bound to open source your own code as well. You can just
   as well choose to use the zlib license though. See gpl.txt and zlib.txt for
   details of both licenses.


Q: So does this mean, AllegroGL has not the same license as Allegro? Why is
   that? Will it change?

A: Apparently, it seems to not be the same license. We (current developers) do
   not know why this is either - but it's how the original authors licensed it.
   We would like to change the license to be the same as Allegro and likely
   will do so for new versions.



Installation and configuration
------------------------------

Q: How do I compile AllegroGL?

A: See readme.txt for detailed instructions.


Q: I ran the makefile file, but it complains about a missing
   'alleg.lib' or 'liballeg.a'. What's going on?

A: You need to make sure you built Allegro before being able to build
   AllegroGL. You'll also need to build Allegro and AllegroGL using the
   same compiler - mix and matching compilers will not work.
   


AllegroGL and MSVC
------------------

Q: I made my own program/game with AllegroGL and MSVC, and it
   successfully compiles. However, it crashes when I run it, complaining
   about "DescribePixelFormat" not being in opengl32.dll. Is it a bug in
   AllegroGL?
   - or -
   I made my own program/game with AllegroGL and MSVC, and when
   I try to compile it, it gives me some linker error about missing
   functions. Is it a bug in AllegroGL?
   
A: No, it's not. You just need to properly set up the libraries to link to.
   You should be using: user32.lib gdi32.lib alleg.lib agl.lib opengl32.lib
   glu32.lib. Any other library is optional.


Q: I can't compile AllegroGL programs. I get tons of errors about _imp_malloc()
   being redefined. Help!

A: Make sure you compiled with Multithreaded DLL runtime (Debug Multithreaded
   DLL in debug mode). The command line switch is -MD or -MDd (and NOT -ML).


AllegroGL and Mingw
-------------------

Q: I made my own program/game with AllegroGL and Mingw/Dev-C++, and it
   successfully compiles. However, it crashes when I run it, complaining
   about "DescribePixelFormat" not being in opengl32.dll. Is it a bug in
   AllegroGL?
   - or -
   I made my own program/game with AllegroGL and Mingw/Dev-C++, and when
   I try to compile it, it gives me some linker error about missing
   functions. Is it a bug in AllegroGL?
   
A: No, it's not. You just need to properly set up the libraries to link to.
   You should be using: -lagl -lalleg -luser32 -lgdi32 -lopengl32 -lglu32.



AllegroGL and Windows
---------------------



AllegroGL and Linux/X
---------------------

Q: AllegroGL doesn't work if I build it in Linux. I am using GCC 2.96 and
   RedHat 7.0.

A: Either upgrade or downgrade your version of GCC to 3.0.x or 2.95.x.
   RedHat 7's version was taken directly from CVS and was in an
   unstable state.


Q : My X server crashes whenever I use an AllegroGL application.
    - or -
    AllegroGL apps crash when I move the window or maximize it.

A : This is likely to be a race condition. Allegro must be compiled with
    pthreads support enabled.



Allegro/AllegroGL and OpenGL
----------------------------

Q: How do I convert a direction vector and up vector into something
   OpenGL can use?

A: First, you'll need to use Allegro's matrix function.
   See get_camera_matrix[_f]() on how to use it. Then you can convert the
   Allegro MATRIX[_f] into an OpenGL matrix (GLfloat[16]) using
   allegro_gl_MATRIX[_f]_to_GLfloat(). After that, it's a simple matter
   of calling glMultMatrixf with the array of floats to apply the
   transformation to the current matrix.


Q: Can I use Allegro's matrix and quaternion code with OpenGL?

A: You can use most of Allegro's matrix and quat code in OpenGL if you
   need to do your own transformations. However, apply_matrix[_f]() and
   apply_quat() will NOT work properly due to the difference of coordinate
   system in between Allegro and OpenGL (see relevant docs). You should use
   allegro_gl_apply_quat() (or allegro_gl_quat_to_glRotatef()) instead.
   Sorry, there is no matrix application code yet.


Q: Can I use GLUT 3D primitives with AllegroGL?

A: You can use safely 3D primitives of the GLUT library since it uses "pure"
   OpenGL functions and makes no hardware nor platform specific calls.
   (Successfully tested on Linux/XFree 4.0,  AllegroGL 0.0.18 and GLUT from
   Mesa 3.4.1).


Q: How can I force textures built with 'allegro_gl_make_texture' to
   use bilinear filtering ?

A: Use the GL command 'glTexParameteri' to change the way the texture is
   magnified or minified. For example, if you want to force bilinear filtering
   after a texture has been created by AllegroGL, you should add the following
   lines just after the call of 'allegro_gl_make_texture' :
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   You can also read the man pages of 'glTexParameteri' or the red book for
   more information.
