Marginally better vbo/ibo tracking

This commit is contained in:
Grant Sanderson 2023-01-27 10:01:37 -08:00
parent 97e4c25453
commit 40ae481979

View file

@ -56,12 +56,9 @@ class ShaderWrapper(object):
self.update_program_uniforms(uniforms or dict())
if texture_paths is not None:
self.init_textures(texture_paths)
self.init_vao()
self.refresh_id()
self.vbo = None
self.ibo = None
self.vao = None
def init_program_code(self) -> None:
def get_code(name: str) -> str | None:
return get_shader_code_from_file(
@ -88,6 +85,11 @@ class ShaderWrapper(object):
tid = get_texture_id(texture)
self.uniforms[name] = tid
def init_vao(self):
self.vbo = None
self.ibo = None
self.vao = None
def __eq__(self, shader_wrapper: ShaderWrapper):
return all((
np.all(self.vert_data == shader_wrapper.vert_data),
@ -106,9 +108,7 @@ class ShaderWrapper(object):
result.ctx = self.ctx
result.vert_data = self.vert_data.copy()
result.vert_indices = self.vert_indices.copy()
result.vao = None
result.vbo = None
result.ibo = None
result.init_vao()
return result
def is_valid(self) -> bool:
@ -247,8 +247,9 @@ class ShaderWrapper(object):
def generate_vao(self, refresh: bool = True):
self.release()
# Data buffer
vbo = self.get_vertex_buffer_object(refresh)
ibo = self.get_index_buffer_object(refresh)
vbo = self.vbo = self.get_vertex_buffer_object(refresh)
ibo = self.ibo = self.get_index_buffer_object(refresh)
# Vertex array object
self.vao = self.ctx.vertex_array(
program=self.program,