This test verifies the functionality of the OES_vertex_array_object extension, if it is available.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS WebGL context exists
Testing binding enum with extension disabled
PASS getError was expected value: INVALID_ENUM : VERTEX_ARRAY_BINDING_OES should not be queryable if extension is disabled
PASS Successfully enabled OES_vertex_array_object extension
PASS OES_vertex_array_object listed as supported and getExtension succeeded
Testing binding enum with extension enabled
PASS ext.VERTEX_ARRAY_BINDING_OES is 0x85B5
PASS getError was expected value: NO_ERROR : VERTEX_ARRAY_BINDING_OES query should succeed if extension is enable
PASS Default value of VERTEX_ARRAY_BINDING_OES is null
Testing binding a VAO
PASS gl.getParameter(ext.VERTEX_ARRAY_BINDING_OES) is null
PASS gl.getParameter(ext.VERTEX_ARRAY_BINDING_OES) is expected VAO
PASS gl.getParameter(ext.VERTEX_ARRAY_BINDING_OES) is expected VAO
PASS gl.getParameter(ext.VERTEX_ARRAY_BINDING_OES) is null
PASS getError was expected value: INVALID_OPERATION : binding a deleted vertex array object
PASS gl.getParameter(ext.VERTEX_ARRAY_BINDING_OES) is null
Testing object creation
PASS getError was expected value: NO_ERROR : createVertexArrayOES should not set an error
PASS vao is non-null.
PASS ext.isVertexArrayOES(vao) is false
PASS ext.isVertexArrayOES(vao) is true
PASS ext.isVertexArrayOES(vao) is true
PASS ext.isVertexArrayOES() is false
PASS ext.isVertexArrayOES(null) is false
Testing attributes work across bindings
PASS All attributes preserved across bindings
Testing that attribute values are not attached to bindings
PASS Vertex attribute values are not attached to bindings
Testing draws with various VAO bindings
PASS Draw 0 passed pixel test
PASS Draw 1 passed pixel test
PASS Draw 2 passed pixel test
Testing using deleted buffers referenced by VAOs
PASS should be 255,0,0,255
PASS should be 0,255,0,255
PASS should be 0,0,255,255
PASS should be 0,255,255,255
Testing that VAOs don't effect ARRAY_BUFFER binding.
PASS should be red
PASS should be green
PASS getError was expected value: NO_ERROR : there should be no errors

PASS successfullyParsed is true

TEST COMPLETE

