From 43d89db008b2805ae970c1e8950f355a06cea292 Mon Sep 17 00:00:00 2001 From: Jim Bailey Date: Thu, 5 Sep 2013 21:53:31 +0100 Subject: [PATCH] graphics/opengl: Added VBO support for glDrawElements and glVertexAttribPointer. --- kivy/graphics/opengl.pyx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/kivy/graphics/opengl.pyx b/kivy/graphics/opengl.pyx index b9074a612..41b22cd7b 100644 --- a/kivy/graphics/opengl.pyx +++ b/kivy/graphics/opengl.pyx @@ -710,11 +710,18 @@ def glDrawArrays(GLenum mode, GLint first, GLsizei count): ''' c_opengl.glDrawArrays(mode, first, count) -def glDrawElements(GLenum mode, GLsizei count, GLenum type, bytes indices): +def glDrawElements(GLenum mode, GLsizei count, GLenum type, indices): '''See: `glDrawElements() on Kronos website `_ ''' - c_opengl.glDrawElements(mode, count, type, (indices)) + cdef void *ptr = NULL + if isinstance(indices, bytes): + ptr = ((indices)) + elif isinstance(indices, (long, int)): + ptr = (indices) + else: + raise TypeError("Argument 'indices' has incorrect type (expected bytes or int).") + c_opengl.glDrawElements(mode, count, type, ptr) def glEnable(GLenum cap): '''See: `glEnable() on Kronos website @@ -1548,12 +1555,19 @@ def glVertexAttrib4fv(GLuint indx, list values): #c_opengl.glVertexAttrib4fv(indx, values) raise NotImplemented() -def glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, bytes data): +def glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, data): '''See: `glVertexAttribPointer() on Kronos website `_ ''' - c_opengl.glVertexAttribPointer(index, size, type, normalized, stride, (data)) + cdef void *ptr = NULL + if isinstance(data, bytes): + ptr = ((data)) + elif isinstance(data, (long, int)): + ptr = (data) + else: + raise TypeError("Argument 'data' has incorrect type (expected bytes or int).") + c_opengl.glVertexAttribPointer(index, size, type, normalized, stride, ptr) def glViewport(GLint x, GLint y, GLsizei width, GLsizei height): '''See: `glViewport() on Kronos website