mirror of
https://github.com/3b1b/manim.git
synced 2025-09-19 04:41:56 +00:00
Update so that vbo is not recreated on each from, but is read into
This commit is contained in:
parent
0efa96e399
commit
f9b9cf69fd
2 changed files with 19 additions and 10 deletions
|
@ -2050,7 +2050,7 @@ class Mobject(object):
|
|||
if self._data_has_changed:
|
||||
self.shader_wrappers = self.get_shader_wrapper_list(ctx)
|
||||
for shader_wrapper in self.shader_wrappers:
|
||||
shader_wrapper.generate_vao()
|
||||
shader_wrapper.load_data()
|
||||
self._data_has_changed = False
|
||||
for shader_wrapper in self.shader_wrappers:
|
||||
shader_wrapper.update_program_uniforms(camera_uniforms)
|
||||
|
|
|
@ -229,21 +229,30 @@ class ShaderWrapper(object):
|
|||
for name, value in uniforms.items():
|
||||
set_program_uniform(self.program, name, value)
|
||||
|
||||
def get_vertex_buffer_object(self, refresh: bool = True):
|
||||
if refresh:
|
||||
self.vbo = self.ctx.buffer(self.vert_data)
|
||||
def get_vertex_buffer_object(self):
|
||||
self.vbo = self.ctx.buffer(self.vert_data)
|
||||
return self.vbo
|
||||
|
||||
def get_index_buffer_object(self, refresh: bool = True):
|
||||
if refresh and len(self.vert_indices) > 0:
|
||||
def get_index_buffer_object(self):
|
||||
if len(self.vert_indices) > 0:
|
||||
self.ibo = self.ctx.buffer(self.vert_indices.astype(np.uint32))
|
||||
return self.ibo
|
||||
|
||||
def generate_vao(self, refresh: bool = True):
|
||||
self.release()
|
||||
def load_data(self):
|
||||
if self.vao is None:
|
||||
self.generate_vao()
|
||||
elif self.vao.vertices != len(self.vert_data):
|
||||
self.release()
|
||||
self.generate_vao()
|
||||
else:
|
||||
self.vbo.write(self.vert_data)
|
||||
if self.ibo is not None:
|
||||
self.ibo.write(self.self.vert_indices.astype(np.uint32))
|
||||
|
||||
def generate_vao(self):
|
||||
# Data buffer
|
||||
vbo = self.get_vertex_buffer_object(refresh)
|
||||
ibo = self.get_index_buffer_object(refresh)
|
||||
vbo = self.get_vertex_buffer_object()
|
||||
ibo = self.get_index_buffer_object()
|
||||
|
||||
# Vertex array object
|
||||
self.vao = self.ctx.vertex_array(
|
||||
|
|
Loading…
Add table
Reference in a new issue