diff --git a/manimlib/camera/camera.py b/manimlib/camera/camera.py index efd8c537..fb6a84e9 100644 --- a/manimlib/camera/camera.py +++ b/manimlib/camera/camera.py @@ -402,16 +402,15 @@ class Camera(object): shader_wrapper: ShaderWrapper, single_use: bool = True ) -> dict[str, Any]: - # Data buffers - vbo = self.ctx.buffer(shader_wrapper.vert_data.tobytes()) - if shader_wrapper.vert_indices is None: - ibo = None - else: - vert_index_data = shader_wrapper.vert_indices.astype('i4').tobytes() - if vert_index_data: - ibo = self.ctx.buffer(vert_index_data) - else: - ibo = None + # Data buffer + vert_data = shader_wrapper.vert_data + indices = shader_wrapper.vert_indices + if indices is not None: + vert_data = vert_data[indices] + vbo = self.ctx.buffer(vert_data.tobytes()) + # For the moment, the index buffer is actually not used, + # since it seems to make the actual render calls meaninfully slower + ibo = None # Program and vertex array shader_program, vert_format = self.get_shader_program(shader_wrapper) diff --git a/manimlib/mobject/types/vectorized_mobject.py b/manimlib/mobject/types/vectorized_mobject.py index 23f23b1c..312e01ca 100644 --- a/manimlib/mobject/types/vectorized_mobject.py +++ b/manimlib/mobject/types/vectorized_mobject.py @@ -1134,6 +1134,7 @@ class VMobject(Mobject): self.stroke_data = np.zeros(0, dtype=self.stroke_dtype) self.fill_shader_wrapper = ShaderWrapper( vert_data=self.fill_data, + vert_indices=np.zeros(0, dtype='i4'), uniforms=self.uniforms, shader_folder=self.fill_shader_folder, render_primitive=self.fill_render_primitive, @@ -1152,7 +1153,8 @@ class VMobject(Mobject): return self def get_fill_shader_wrapper(self) -> ShaderWrapper: - self.fill_shader_wrapper.vert_data = self.get_fill_shader_data()[self.get_triangulation()] + self.fill_shader_wrapper.vert_data = self.get_fill_shader_data() + self.fill_shader_wrapper.vert_indices = self.get_triangulation() self.fill_shader_wrapper.uniforms = self.get_shader_uniforms() self.fill_shader_wrapper.depth_test = self.depth_test return self.fill_shader_wrapper