I have two VBOs, assigned to names 1 and 2. Only 2 is being drawn. However, if I comment out VBO 2, VBO 1 is drawn with no problem. Here’s the relevant code. for m in shader._models: try: # Set the model’s transform matrix uniform vbo, mode = m.render_data glUniformMatrix4fv( shader.uniforms[‘model’], 1, GL_FALSE, np.array(m.model_matrix)) vbo.bind() # Binds the VBO. glDrawArrays(mode, 0, len(vbo)) finally: vbo.unbind() # Unbinds it. glGetting GL_ARRAY_BUFFER_BINDING in the loop gives me alternating 1 and 2s, so the buffers are binding correctly. I have done a variety of checks to ensure one object isn’t being hidden by the other, for instance. The only explanation I can think of is glDrawArrays clears the whole buffer every time it draws? What the heck?