Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gl/osiriongl.h')
-rw-r--r--src/gl/osiriongl.h158
1 files changed, 158 insertions, 0 deletions
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 <GL/gl.h>
+
+// 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__