/************************************************************************ * Copyright (c) 2005-2006 tok@openlinux.org.uk * * * * This software is provided as-is, without any express or implied * * warranty. In no event will the authors be held liable for any * * damages arising from the use of this software. * * * * Permission is granted to anyone to use this software for any purpose, * * including commercial applications, and to alter it and redistribute * * it freely, subject to the following restrictions: * * * * 1. The origin of this software must not be misrepresented; you must * * not claim that you wrote the original software. If you use this * * software in a product, an acknowledgment in the product documentation * * would be appreciated but is not required. * * * * 2. Altered source versions must be plainly marked as such, and must * * not be misrepresented as being the original software. * * * * 3. This notice may not be removed or altered from any source * * distribution. * ************************************************************************/ #ifndef GL_BASE_H #define GL_BASE_H #include namespace OpenGL { /* template struct TexOps { static GLuint create(); static void bind(GLuint id); static void destropy(GLuint id); }; */ template struct Quad { vertex_type vertices[4][entries_per_vertex]; static const GLenum primitiveType = GL_QUADS; }; template struct QuadNormals { normal_type normals[4][entries_per_vertex]; }; template struct QuadColors { color_type colors[4][num_colors]; }; template struct QuadTexCoords { texcoord_type texCoords[4][num_coords]; GLuint texId; }; template struct ColoredQuad : public Quad, public QuadColors { }; template struct TexturedQuad : public Quad, public QuadTexCoords { }; typedef Quad Quad2Int; typedef ColoredQuad ColoredQuad2Int; typedef TexturedQuad FontQuad; template class ImmediateRenderer { public: static void draw(const T & t); static void begin(GLenum type); static void end(); protected: static GLenum currentPrimitiveType; static bool insideBegin; static void assertCorrectPrimitive(GLenum newType); }; // ugly as hell, but seems to work #define Renderer ImmediateRenderer } #endif