From 3866f2b33313d891347f454537843befd295b78f Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 20 Oct 2007 10:02:51 +0000 Subject: Initial import. --- src/gl/osiriongl.h | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 src/gl/osiriongl.h (limited to 'src/gl/osiriongl.h') diff --git a/src/gl/osiriongl.h b/src/gl/osiriongl.h new file mode 100644 index 0000000..92c0db3 --- /dev/null +++ b/src/gl/osiriongl.h @@ -0,0 +1,158 @@ +/* gl.h + This file is part of the Osirion project +*/ + +#ifndef __INCLUDED_OSIRIONGL_H__ +#define __INCLUDED_OSIRIONGL_H__ + +// OpenGL headers +#include + +// project headers +#include "common/vector3f.h" +#include "common/color.h" + +/// wrapper namespace for OpenGL operations +/*! The GL namespace provides a wrapper to the OpenGL library functions. + * All methods take floats or Vector3f and Color as parameters. + */ +namespace gl +{ + /// initialize the OpenGL subsystem + void init(); + + /// shutdown the OpenGL subsystem + void shutdown(); + + /// enum to denote Vertex drawing modes + enum Primitive { + Points=GL_POINTS, + Lines=GL_LINES, + LineStrip=GL_LINE_STRIP, + LineLoop=GL_LINE_LOOP, + Triangles=GL_TRIANGLES, + TriangleStrip=GL_TRIANGLE_STRIP, + TriangleFan=GL_TRIANGLE_FAN, + Quads=GL_QUADS, + QuadStrip=GL_QUAD_STRIP, + Polygon=GL_POLYGON + }; + + + /// glViewPort + void viewport(GLint x, GLint y, GLsizei width, GLsizei height ); + + /// set the color used to clear to buffer + void clearcolor(Color const &color); + /// set the color used to clear to buffer + void clearcolor(const float r, const float g, const float b, const float a); + + /// clear buffers to preset values + void clear (GLbitfield mask); + + /// glMatrixMode + void matrixmode(GLenum mode); + + /// glEnable + void enable(GLenum cap); + + /// glShadeModel + void shademodel(GLenum mode); + + /// glCullFace + void cullface(GLenum mode); + + /// glFrontFace + void frontface(GLenum mode); + + + /// glDepthMask + void depthmask(GLenum mode); + + /// Delimite the start of a sequence of verteces describing a primitive or group of primitives + /*! @param primitive The type of drawing primitive + * @see end() + */ + void begin(Primitive primitive); + + /// Delimit the end of a sequence of verteces describing a primitive or group of primitives + /*! @see begin() + */ + void end(); + + /// Add the next vertex the the current drawing operation + /*! From the glVertex() description: + * vertex() commands are used within begin()/end() pairs to specify point, + * line, and polygon vertices. The current color, normal, and texture + * coordinates are associated with the vertex when vertex() is called. + */ + void vertex(const Vector3f& vector); + + void vertex(const float x, const float y, const float z); + + /// Multiply the current matrix by a general rotation matrix + /*! @param angle The angle of the rotation, in degrees [0-360] + * @param vector The rotation axes, relative to the origin (0,0,0) + */ + void rotate(const float angle, const Vector3f& vector); + + /// Multiply the current matrix by a general rotation matrix + /*! @param angle The angle of the rotation, in degrees + * @param x The x-coordinate of the rotation vector + * @param y The y-coordinate of the rotation vector + * @param z The z-coordinate of the rotation vector + */ + void rotate(const float angle, const float x, const float y, const float z); + + /// Multiply the current matrix by a general translation matrix + /*! @param vector The translation vector, relative to the origin (0,0,0) + */ + void translate(const Vector3f& vector); + + /// Multiply the current matrix by a general translation matrix + /*! + * @param x The x-coordinate of the translation vector + * @param y The y-coordinate of the translation vector + * @param z The z-coordinate of the translation vector + */ + void translate(const float x, const float y, const float z); + + /// Multiply the current matrix by a general scaling matrix + /*! @param vector The scale factor for all 3 axes + */ + void scale(const Vector3f& vector); + + /// Multiply the current matrix by a general scaling matrix + /*! + * @param x x-scaling factor + * @param y y-scaling factor + * @param z z-scaling factor + */ + void scale(const float x, const float y, const float z); + + /// Specify the drawing color for the next GL functions + /*! @param color the new drawing color + */ + void color(Color const & color); + + /*! @param r red value of the new drawing color + * @param g green value of the new drawing color + * @param b blue value of the new drawing color + * @param a alpha value of the new drawing color + */ + void color(const float r, const float g, const float b, const float a=1.0f); + + /// Push the current transformation matrix to the stack + void push(); + + /// Replace the transformation matrix with the top from the stack + void pop(); + + /// Replace the transformation matrix with the identity matrtix + void loadidentity(); + + /// Perspective matrix + void frustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble znear, GLdouble zfar); +}; + +#endif // __INCLUDED_OSIRIONGL_H__ -- cgit v1.2.3