diff --git a/basis/opengl/opengl.factor b/basis/opengl/opengl.factor index 7d79516a2c..a56b72ada5 100644 --- a/basis/opengl/opengl.factor +++ b/basis/opengl/opengl.factor @@ -128,12 +128,12 @@ MACRO: all-enabled-client-state ( seq quot -- ) : (gen-gl-object) ( quot -- id ) [ 1 0 ] dip keep *uint ; inline -: gen-gl-buffer ( -- id ) - [ glGenBuffers ] (gen-gl-object) ; - : (delete-gl-object) ( id quot -- ) [ 1 swap ] dip call ; inline +: gen-gl-buffer ( -- id ) + [ glGenBuffers ] (gen-gl-object) ; + : delete-gl-buffer ( id -- ) [ glDeleteBuffers ] (delete-gl-object) ; @@ -146,6 +146,16 @@ MACRO: all-enabled-client-state ( seq quot -- ) GL_ARRAY_BUFFER swap _ with-gl-buffer ] with-gl-buffer ; inline +: gen-vertex-array ( -- id ) + [ glGenVertexArrays ] (gen-gl-object) ; + +: delete-vertex-array ( id -- ) + [ glDeleteVertexArrays ] (delete-gl-object) ; + +:: with-vertex-array ( id quot -- ) + id glBindVertexArray + quot [ binding 0 glBindVertexArray ] [ ] cleanup ; inline + : ( target data hint -- id ) pick gen-gl-buffer [ [