collada/buffer: also generate index buffer offsets

This commit is contained in:
Zack Buhman 2026-01-25 16:14:33 -06:00
parent 02b2f1a95f
commit 88dd523715

View File

@ -53,6 +53,8 @@ class MeshVertexIndexBufferState:
self.index_buffer = [] # a list of integers self.index_buffer = [] # a list of integers
self.vertex_buffer = [] # a list of floats self.vertex_buffer = [] # a list of floats
self.index_buffer_offsets = []
# vertex_index_table: input/collada vertex indices in the order written # vertex_index_table: input/collada vertex indices in the order written
# to the index buffer # to the index buffer
# indices: output vertex index (absolute) # indices: output vertex index (absolute)
@ -74,6 +76,8 @@ def mesh_vertex_index_buffer(collada, mesh):
for triangles in mesh.primitive_elements: for triangles in mesh.primitive_elements:
assert type(triangles) is types.Triangles assert type(triangles) is types.Triangles
state.index_buffer_offsets.append(len(state.index_buffer))
max_offset = max(i.offset for i in triangles.inputs) max_offset = max(i.offset for i in triangles.inputs)
p_stride = max_offset + 1 p_stride = max_offset + 1
offset_table, used_offsets = build_offset_table(collada, triangles, p_stride) offset_table, used_offsets = build_offset_table(collada, triangles, p_stride)
@ -161,6 +165,9 @@ if __name__ == "__main__":
assert type(mesh) is types.Mesh assert type(mesh) is types.Mesh
state = mesh_vertex_index_buffer(collada, mesh) state = mesh_vertex_index_buffer(collada, mesh)
#skin = collada.library_controllers[0].controllers[0].control_element skin = collada.library_controllers[0].controllers[0].control_element
#assert type(skin) is types.Skin assert type(skin) is types.Skin
#vertex_buffer_jw = skin_vertex_buffer(collada, skin, vertex_index_table) vertex_buffer_jw = skin_vertex_buffer(collada, skin, state.vertex_index_table)
#print(vertex_buffer_jw)
#print(state.vertex_buffer)
#print(state.index_buffer)