diff --git a/lime/graphics/opengl/GL.hx b/lime/graphics/opengl/GL.hx index 5ee1bf702..bf555c2a2 100644 --- a/lime/graphics/opengl/GL.hx +++ b/lime/graphics/opengl/GL.hx @@ -2176,7 +2176,16 @@ class GL { #if (js && html5 && !display) context.vertexAttribPointer (indx, size, type, normalized, stride, offset); #elseif ((cpp || neko || nodejs) && lime_opengl) - lime_gl_vertex_attrib_pointer (indx, size, type, normalized, stride, offset); + if (normalized) { + + lime_gl_vertex_attrib_pointer_1 (indx, size, type, stride, offset); + + } else { + + lime_gl_vertex_attrib_pointer_2 (indx, size, type, stride, offset); + + } + //lime_gl_vertex_attrib_pointer (indx, size, type, normalized, stride, offset); #end } @@ -2330,6 +2339,8 @@ class GL { private static var lime_gl_vertex_attrib4f = System.load ("lime", "lime_gl_vertex_attrib4f", 5); private static var lime_gl_vertex_attrib4fv = System.load ("lime", "lime_gl_vertex_attrib4fv", 2); private static var lime_gl_vertex_attrib_pointer = System.load ("lime", "lime_gl_vertex_attrib_pointer", -1); + private static var lime_gl_vertex_attrib_pointer_1 = System.load ("lime", "lime_gl_vertex_attrib_pointer_1", 5); + private static var lime_gl_vertex_attrib_pointer_2 = System.load ("lime", "lime_gl_vertex_attrib_pointer_2", 5); private static var lime_gl_viewport = System.load ("lime", "lime_gl_viewport", 4); #end diff --git a/project/src/graphics/opengl/OpenGLBindings.cpp b/project/src/graphics/opengl/OpenGLBindings.cpp index f64967aea..07ed971d4 100644 --- a/project/src/graphics/opengl/OpenGLBindings.cpp +++ b/project/src/graphics/opengl/OpenGLBindings.cpp @@ -1594,7 +1594,7 @@ namespace lime { value lime_gl_vertex_attrib_pointer (value *arg, int nargs) { - enum { aIndex, aSize, aType, aNormalized, aStride, aOffset, aSIZE }; + enum { aIndex, aSize, aType, aNormalized, aStride, aOffset }; glVertexAttribPointer (val_int (arg[aIndex]), val_int (arg[aSize]), val_int (arg[aType]), val_bool (arg[aNormalized]), val_int (arg[aStride]), (void *)(intptr_t)val_int (arg[aOffset])); return alloc_null (); @@ -1602,6 +1602,22 @@ namespace lime { } + value lime_gl_vertex_attrib_pointer_1 (value index, value size, value type, value stride, value offset) { + + glVertexAttribPointer (val_int (index), val_int (size), val_int (type), true, val_int (stride), (void *)(intptr_t)val_int (offset)); + return alloc_null (); + + } + + + value lime_gl_vertex_attrib_pointer_2 (value index, value size, value type, value stride, value offset) { + + glVertexAttribPointer (val_int (index), val_int (size), val_int (type), false, val_int (stride), (void *)(intptr_t)val_int (offset)); + return alloc_null (); + + } + + value lime_gl_vertex_attrib1f (value inLocation, value inV0) { glVertexAttrib1f (val_int (inLocation), val_number (inV0)); @@ -1858,6 +1874,8 @@ namespace lime { DEFINE_PRIM (lime_gl_viewport, 4); DEFINE_PRIM (lime_gl_version, 0); DEFINE_PRIM_MULT (lime_gl_vertex_attrib_pointer); + DEFINE_PRIM (lime_gl_vertex_attrib_pointer_1, 5); + DEFINE_PRIM (lime_gl_vertex_attrib_pointer_2, 5); DEFINE_PRIM (lime_gl_vertex_attrib1f, 2); DEFINE_PRIM (lime_gl_vertex_attrib1fv, 2); DEFINE_PRIM (lime_gl_vertex_attrib2f, 3);