Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-02 14:53:46 +0000
committerStijn Buys <ingar@osirion.org>2008-02-02 14:53:46 +0000
commit67f8a7a783e550cab8e6a77d997b31815ee8cd7e (patch)
treeb68bde793bb881b965366569cfc9cea65423eb12 /src/render/gl.h
parent8ac9b27f5f0a1e833974058464cdf7029c9d7e0b (diff)
introduced librender
Diffstat (limited to 'src/render/gl.h')
-rw-r--r--src/render/gl.h168
1 files changed, 168 insertions, 0 deletions
diff --git a/src/render/gl.h b/src/render/gl.h
new file mode 100644
index 0000000..0513410
--- /dev/null
+++ b/src/render/gl.h
@@ -0,0 +1,168 @@
+/*
+ render/gl.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_RENDER_GL_H__
+#define __INCLUDED_RENDER_GL_H__
+
+// project headers
+#include "math/vector3f.h"
+#include "math/color.h"
+
+// OpenGL headers
+#include <GL/gl.h>
+
+namespace render {
+
+/// 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
+{
+ /// name of the hardware OpenGL renderer
+ std::string renderer();
+ /// vender of the system OpenGL implementation
+ std::string vendor();
+ /// version of the system OpenGL implementation
+ std::string version();
+ /// Opengl Extensions string
+ std::string extensions();
+
+ /// 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(math::Color const &color);
+ 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);
+
+ /// glDisable
+ void disable(GLenum cap);
+
+ /// glShadeModel
+ void shademodel(GLenum mode);
+
+ /// glCullFace
+ void cullface(GLenum mode);
+
+ /// glFrontFace
+ void frontface(GLenum mode);
+
+ /// glDepthMask
+ void depthmask(GLenum mode);
+
+ /// glBlendFunc
+ void blendfunc(GLenum sfactor, GLenum dfactor);
+
+ /// 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 math::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 math::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 math::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 math::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(math::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_RENDER_GL_H__