[docs]classVAO:def__init__(self,ctx):self.ctx=ctxself.vbo=VBO(ctx)self.program=ShaderProgram(ctx)self.vaos={}# Generate a Cube VAO for a specified shader programself.vaos['cube']=self.get_vao(program=self.program.programs['default'],vbo=self.vbo.vbos['cube'])# Generate a Cube VAO shadow-map for a specified shader programself.vaos['shadow_cube']=self.get_vao(program=self.program.programs['shadow_map'],vbo=self.vbo.vbos['cube'])# Generate a Cat VAO for a specified shader programself.vaos['cat']=self.get_vao(program=self.program.programs['default'],vbo=self.vbo.vbos['cat'])# Generate a Cat VAO shadow-map for a specified shader programself.vaos['shadow_cat']=self.get_vao(program=self.program.programs['shadow_map'],vbo=self.vbo.vbos['cat'])# Generate a SkyBox VAO for a specified shader programself.vaos['skybox']=self.get_vao(program=self.program.programs['skybox'],vbo=self.vbo.vbos['skybox'])# Generate an advanced SkyBox VAO for a specified shader programself.vaos['advanced_skybox']=self.get_vao(program=self.program.programs['advanced_skybox'],vbo=self.vbo.vbos['advanced_skybox'])# Formats a Vertex Buffer Object (VBO) into a renderable Vertex Array Object (VAO)