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,
|
shader_wrapper: ShaderWrapper,
|
||||||
single_use: bool = True
|
single_use: bool = True
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
# Data buffers
|
# Data buffer
|
||||||
vbo = self.ctx.buffer(shader_wrapper.vert_data.tobytes())
|
vert_data = shader_wrapper.vert_data
|
||||||
if shader_wrapper.vert_indices is None:
|
indices = shader_wrapper.vert_indices
|
||||||
ibo = None
|
if indices is not None:
|
||||||
else:
|
vert_data = vert_data[indices]
|
||||||
vert_index_data = shader_wrapper.vert_indices.astype('i4').tobytes()
|
vbo = self.ctx.buffer(vert_data.tobytes())
|
||||||
if vert_index_data:
|
# For the moment, the index buffer is actually not used,
|
||||||
ibo = self.ctx.buffer(vert_index_data)
|
# since it seems to make the actual render calls meaninfully slower
|
||||||
else:
|
ibo = None
|
||||||
ibo = None
|
|
||||||
|
|
||||||
# Program and vertex array
|
# Program and vertex array
|
||||||
shader_program, vert_format = self.get_shader_program(shader_wrapper)
|
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.stroke_data = np.zeros(0, dtype=self.stroke_dtype)
|
||||||
self.fill_shader_wrapper = ShaderWrapper(
|
self.fill_shader_wrapper = ShaderWrapper(
|
||||||
vert_data=self.fill_data,
|
vert_data=self.fill_data,
|
||||||
|
vert_indices=np.zeros(0, dtype='i4'),
|
||||||
uniforms=self.uniforms,
|
uniforms=self.uniforms,
|
||||||
shader_folder=self.fill_shader_folder,
|
shader_folder=self.fill_shader_folder,
|
||||||
render_primitive=self.fill_render_primitive,
|
render_primitive=self.fill_render_primitive,
|
||||||
|
@ -1152,7 +1153,8 @@ class VMobject(Mobject):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def get_fill_shader_wrapper(self) -> ShaderWrapper:
|
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.uniforms = self.get_shader_uniforms()
|
||||||
self.fill_shader_wrapper.depth_test = self.depth_test
|
self.fill_shader_wrapper.depth_test = self.depth_test
|
||||||
return self.fill_shader_wrapper
|
return self.fill_shader_wrapper
|
||||||
|
|
Loading…
Add table
Reference in a new issue