mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Track indices for fill shader, but prevent ibo usage at the Camera level
This commit is contained in:
parent
a07701e295
commit
9464f83d18
2 changed files with 12 additions and 11 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue