summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/glwrapper.cc
diff options
context:
space:
mode:
authorIxtli <cg@325i.org>2010-03-01 17:52:43 +0900
committerEnne Walker <ennewalker@users.sourceforge.net>2010-04-24 10:19:38 -0400
commitdd974ddf4720629a54baf97d6dafc22cc50d5cd6 (patch)
treeeb51b4162f283f9b32e51ae06ed6a26270d7c8a6 /crawl-ref/source/glwrapper.cc
parent4064d1c1f84d93baf2a2cec3504d08220f2ea570 (diff)
downloadcrawl-ref-dd974ddf4720629a54baf97d6dafc22cc50d5cd6.tar.gz
crawl-ref-dd974ddf4720629a54baf97d6dafc22cc50d5cd6.zip
Added drawing functions and fixed many syntax errors in glwrapper.cc/h
Diffstat (limited to 'crawl-ref/source/glwrapper.cc')
-rw-r--r--crawl-ref/source/glwrapper.cc74
1 files changed, 56 insertions, 18 deletions
diff --git a/crawl-ref/source/glwrapper.cc b/crawl-ref/source/glwrapper.cc
index 6198aaedcf..9d5759c1c1 100644
--- a/crawl-ref/source/glwrapper.cc
+++ b/crawl-ref/source/glwrapper.cc
@@ -1,3 +1,5 @@
+#include "debug.h"
+
#include "glwrapper.h"
#ifdef USE_TILE
@@ -82,56 +84,92 @@ void GLStateManager::set(const GLState& state)
glDisable(GL_ALPHA_TEST);
}
-void GLStateManager::drawPTVert(long int size, int mode, int count
- void *vert_pointer, void *tex_pointer)
+void GLStateManager::drawQuadPTVert( long unsigned int size, size_t count,
+ const void *vert_pointer, const void *tex_pointer)
+{
+ ASSERT(_valid(count, GLW_QUADS));
+ glVertexPointer(2, GL_FLOAT, size, vert_pointer);
+ glTexCoordPointer(2, GL_FLOAT, size, tex_pointer);
+ glDrawArrays(GL_QUADS, 0, count);
+}
+
+void GLStateManager::drawQuadPCVert( long unsigned int size, size_t count,
+ const void *vert_pointer, const void *color_pointer)
{
- glVertexPointer(2, GL_FLOAT, size, vert_pointer;
- glTexCoordPointer(2, GL_FLOAT, size, tex_pointer;
- glDrawArrays(mode, 0, count);
+ ASSERT(_valid(count, GLW_QUADS));
+ glVertexPointer(2, GL_FLOAT, size, vert_pointer);
+ glColorPointer(4, GL_UNSIGNED_BYTE, size, color_pointer);
+ glDrawArrays(GL_QUADS, 0, count);
}
-void GLStateManager::drawPCVert(long int size, int mode, int count
- void *vert_pointer, void *color_pointer)
+void GLStateManager::drawLinePCVert( long unsigned int size, size_t count,
+ const void *vert_pointer, const void *color_pointer)
{
+ ASSERT(_valid(count, GLW_LINES));
glVertexPointer(2, GL_FLOAT, size, vert_pointer);
glColorPointer(4, GL_UNSIGNED_BYTE, size, color_pointer);
- glDrawArrays(mode, 0, count);
+ glDrawArrays(GL_LINES, 0, count);
}
-static void drawPTCVert(long int size, int mode, int count
- void *vert_pointer, void *tex_pointer, void *color_pointer)
+void GLStateManager::drawQuadPTCVert( long unsigned int size, size_t count,
+ const void *vert_pointer, const void *tex_pointer,
+ const void *color_pointer)
{
+ ASSERT(_valid(count, GLW_QUADS));
glVertexPointer(2, GL_FLOAT, size, vert_pointer);
glTexCoordPointer(2, GL_FLOAT, size, tex_pointer);
glColorPointer(4, GL_UNSIGNED_BYTE, size, color_pointer);
- glDrawArrays(mode, 0, count);
+ glDrawArrays(GL_QUADS, 0, count);
}
-static void drawP3TCVert(long int size, int mode, int count
- void *vert_pointer, void *tex_pointer, void *color_pointer)
+void GLStateManager::drawQuadP3TCVert( long unsigned int size, size_t count,
+ const void *vert_pointer, const void *tex_pointer,
+ const void *color_pointer)
{
+ ASSERT(_valid(count, GLW_QUADS));
glVertexPointer(3, GL_FLOAT, size, vert_pointer);
glTexCoordPointer(2, GL_FLOAT, size, tex_pointer);
glColorPointer(4, GL_UNSIGNED_BYTE, size, color_pointer);
- glDrawArrays(mode, 0, count);
+ glDrawArrays(GL_QUADS, 0, count);
}
-static void pushMatrix()
+void GLStateManager::pushMatrix()
{
glPushMatrix();
}
-static void popMatrix()
+void GLStateManager::popMatrix()
{
glPopMatrix();
}
-static void translatef(float x, float y, float z)
+void GLStateManager::translatef(float x, float y, float z)
{
glTranslatef(x, y ,z);
}
+#ifdef DEBUG
+bool GLStateManager::_valid(int num_verts, drawing_modes mode)
+{
+ switch( mode )
+ {
+ case GLW_QUADS:
+ case GLW_TRIANGLE_STRIP:
+ return (num_verts % 4 == 0);
+ case GLW_TRIANGLES:
+ return (num_verts % 3 == 0);
+ case GLW_LINES:
+ return (num_verts % 2 == 0);
+ case GLW_POINTS:
+ return (true);
+ default:
+ return (false);
+ }
+
+}
+#endif
+
/////////////////////////////////////////////////////////////////////////////
// Static Methods
-#endif \ No newline at end of file
+#endif