summaryrefslogtreecommitdiff
path: root/glsize.hpp
diff options
context:
space:
mode:
authorJosé Fonseca <jose.r.fonseca@gmail.com>2011-02-20 23:32:22 +0000
committerJosé Fonseca <jose.r.fonseca@gmail.com>2011-02-22 07:15:58 +0000
commit14c21bc57f0772c50850c4a91c0668cd4e6e45b6 (patch)
treef8d220e2fe4c77a8cc2bb6e1afc5d0266e670b86 /glsize.hpp
parent669b2008e4244152c1c624ca190afaba1a0f2c9a (diff)
Basic DrawArrays support.
Diffstat (limited to 'glsize.hpp')
-rw-r--r--glsize.hpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/glsize.hpp b/glsize.hpp
index ead293b..edcd78a 100644
--- a/glsize.hpp
+++ b/glsize.hpp
@@ -44,35 +44,52 @@
static inline size_t
-__glCallLists_size(GLsizei n, GLenum type)
+__gl_type_size(GLenum type)
{
- size_t bytes;
- switch(type) {
+ switch (type) {
+ case GL_BOOL:
case GL_BYTE:
case GL_UNSIGNED_BYTE:
- bytes = 1;
+ return 1;
break;
case GL_SHORT:
case GL_UNSIGNED_SHORT:
case GL_2_BYTES:
case GL_HALF_FLOAT:
- bytes = 2;
+ return 2;
break;
case GL_3_BYTES:
- bytes = 3;
+ return 3;
break;
case GL_INT:
case GL_UNSIGNED_INT:
case GL_FLOAT:
case GL_4_BYTES:
- bytes = 4;
+ return 4;
+ break;
+ case GL_DOUBLE:
+ return 8;
break;
default:
OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, type);
- bytes = 0;
+ return 0;
+ }
+}
+
+static inline size_t
+__glArrayPointer_size(GLint size, GLenum type, GLsizei stride, GLsizei maxIndex)
+{
+ GLsizei elementSize = size*__gl_type_size(type);
+ if (!stride) {
+ stride = elementSize;
}
+ return stride*maxIndex + elementSize;
+}
- return n*bytes;
+static inline size_t
+__glCallLists_size(GLsizei n, GLenum type)
+{
+ return n*__gl_type_size(type);
}
static inline size_t