Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

VLgl.h

Go to the documentation of this file.
00001 /*
00002     File:       VLgl.h
00003 
00004     Function:   Provides some handy wrappers for using vl with
00005                 OpenGL.
00006 
00007     Author:     Andrew Willmott
00008 
00009     Copyright:  (c) 2000, Andrew Willmott
00010 */
00011 
00012 #ifndef __VLgl__
00013 #define __VLgl__
00014 
00015 // float versions
00016 
00017 inline Void glVertex(const Vec2f &a) 
00018 { glVertex2fv(a.Ref()); }
00019 
00020 inline Void glVertex(const Vec3f &a) 
00021 { glVertex3fv(a.Ref()); }
00022 
00023 inline Void glVertex(const Vec4f &a) 
00024 { glVertex4fv(a.Ref()); }
00025 
00026 inline Void glColor(const Vec3f &a) 
00027 { glColor3fv(a.Ref()); }
00028 
00029 inline Void glColor(const Vec4f &a) 
00030 { glColor4fv(a.Ref()); }
00031 
00032 inline Void glNormal(const Vec3f &a) 
00033 { glNormal3fv(a.Ref()); }
00034 
00035 inline Void glTexCoord(const Vec2f &a) 
00036 { glTexCoord2fv(a.Ref()); }
00037 
00038 inline Void glLoadMatrix(const Mat4f &m)
00039 {
00040 #ifdef VL_ROW_ORIENT
00041     glLoadMatrixf(m.Ref());
00042 #else
00043     glLoadMatrixf(trans(m).Ref());
00044 #endif
00045 }
00046 
00047 inline Void glMultMatrix(const Mat4f &m)
00048 {
00049 #ifdef VL_ROW_ORIENT
00050     glMultMatrixf(m.Ref());
00051 #else
00052     glMultMatrixf(trans(m).Ref());
00053 #endif
00054 }
00055 
00056 // double versions
00057 
00058 inline Void glVertex(const Vec2d &a) 
00059 { glVertex2dv(a.Ref()); }
00060 
00061 inline Void glVertex(const Vec3d &a) 
00062 { glVertex3dv(a.Ref()); }
00063 
00064 inline Void glVertex(const Vec4d &a) 
00065 { glVertex4dv(a.Ref()); }
00066 
00067 inline Void glColor(const Vec3d &a) 
00068 { glColor3dv(a.Ref()); }
00069 
00070 inline Void glColor(const Vec4d &a) 
00071 { glColor4dv(a.Ref()); }
00072 
00073 inline Void glNormal(const Vec3d &a) 
00074 { glNormal3dv(a.Ref()); }
00075 
00076 inline Void glTexCoord(const Vec2d &a) 
00077 { glTexCoord2dv(a.Ref()); }
00078 
00079 inline Void glLoadMatrix(const Mat4d &m)
00080 {
00081 #ifdef VL_ROW_ORIENT
00082     glLoadMatrixd(m.Ref());
00083 #else
00084     glLoadMatrixd(trans(m).Ref());
00085 #endif
00086 }
00087 
00088 inline Void glMultMatrix(const Mat4d &m)
00089 {
00090 #ifdef VL_ROW_ORIENT
00091     glMultMatrixd(m.Ref());
00092 #else
00093     glMultMatrixd(trans(m).Ref());
00094 #endif
00095 }
00096 
00097 // Note: glLoadMatrix[fd] expects matrices in column-major
00098 // order, not row-order, hence the VL_ROW_ORIENT dependencies.
00099 // OpenGL internally operates with row vectors (just like
00100 // the original GL), and transformation matrices stored in
00101 // row-major order. However, externally they pretend that
00102 // they use column vectors; everything still works, but
00103 // because trans(Av) = trans(v) trans(A), it appears that
00104 // matrices are stored in column major order.
00105 
00106 #endif

Generated at Sat Aug 5 00:16:50 2000 for Class Library by doxygen 1.1.0 written by Dimitri van Heesch, © 1997-2000