diff options
-rw-r--r-- | gfx/src/asset/model.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/gfx/src/asset/model.c b/gfx/src/asset/model.c index e0df078..73ce731 100644 --- a/gfx/src/asset/model.c +++ b/gfx/src/asset/model.c | |||
@@ -673,7 +673,7 @@ static void load_textures_lazy( | |||
673 | /// the texture, and then defines the sampler shader uniform. | 673 | /// the texture, and then defines the sampler shader uniform. |
674 | static bool load_texture_and_uniform( | 674 | static bool load_texture_and_uniform( |
675 | const cgltf_data* data, Gfx* gfx, const cgltf_texture_view* texture_view, | 675 | const cgltf_data* data, Gfx* gfx, const cgltf_texture_view* texture_view, |
676 | TextureType texture_type, Texture** textures, | 676 | TextureType texture_type, const Texture** textures, |
677 | LoadTextureCmd* load_texture_cmds, int* next_uniform, MaterialDesc* desc) { | 677 | LoadTextureCmd* load_texture_cmds, int* next_uniform, MaterialDesc* desc) { |
678 | assert(data); | 678 | assert(data); |
679 | assert(gfx); | 679 | assert(gfx); |
@@ -726,7 +726,7 @@ static bool load_texture_and_uniform( | |||
726 | /// materials and the textures used by them. | 726 | /// materials and the textures used by them. |
727 | static bool load_materials( | 727 | static bool load_materials( |
728 | const cgltf_data* data, Gfx* gfx, LoadTextureCmd* load_texture_cmds, | 728 | const cgltf_data* data, Gfx* gfx, LoadTextureCmd* load_texture_cmds, |
729 | Texture** textures, Material** materials) { | 729 | const Texture** textures, Material** materials) { |
730 | assert(data); | 730 | assert(data); |
731 | assert(gfx); | 731 | assert(gfx); |
732 | assert(materials); | 732 | assert(materials); |
@@ -946,8 +946,10 @@ static bool load_meshes( | |||
946 | const cgltf_accessor* accessor = prim->indices; | 946 | const cgltf_accessor* accessor = prim->indices; |
947 | const cgltf_buffer_view* view = prim->indices->buffer_view; | 947 | const cgltf_buffer_view* view = prim->indices->buffer_view; |
948 | const cgltf_size buffer_index = view->buffer - data->buffers; | 948 | const cgltf_size buffer_index = view->buffer - data->buffers; |
949 | |||
949 | assert(buffer_index < data->buffers_count); | 950 | assert(buffer_index < data->buffers_count); |
950 | const Buffer* buffer = buffers[buffer_index]; | 951 | Buffer* buffer = buffers[buffer_index]; |
952 | |||
951 | const cgltf_size component_size = | 953 | const cgltf_size component_size = |
952 | get_component_size(accessor->component_type); | 954 | get_component_size(accessor->component_type); |
953 | switch (component_size) { | 955 | switch (component_size) { |
@@ -984,8 +986,9 @@ static bool load_meshes( | |||
984 | const cgltf_buffer_view* view = accessor->buffer_view; | 986 | const cgltf_buffer_view* view = accessor->buffer_view; |
985 | const cgltf_size offset = accessor->offset + view->offset; | 987 | const cgltf_size offset = accessor->offset + view->offset; |
986 | const cgltf_size buffer_index = view->buffer - data->buffers; | 988 | const cgltf_size buffer_index = view->buffer - data->buffers; |
989 | |||
987 | assert(buffer_index < data->buffers_count); | 990 | assert(buffer_index < data->buffers_count); |
988 | const Buffer* buffer = buffers[buffer_index]; | 991 | Buffer* buffer = buffers[buffer_index]; |
989 | 992 | ||
990 | BufferView2d* buffer_view_2d = 0; | 993 | BufferView2d* buffer_view_2d = 0; |
991 | BufferView3d* buffer_view_3d = 0; | 994 | BufferView3d* buffer_view_3d = 0; |
@@ -1532,7 +1535,7 @@ static Model* load_scene( | |||
1532 | Buffer** tangent_buffers = 0; | 1535 | Buffer** tangent_buffers = 0; |
1533 | Buffer** buffers = 0; | 1536 | Buffer** buffers = 0; |
1534 | LoadTextureCmd* load_texture_cmds = 0; | 1537 | LoadTextureCmd* load_texture_cmds = 0; |
1535 | Texture** textures = 0; | 1538 | const Texture** textures = 0; // Textures are owned by asset cache. |
1536 | Material** materials = 0; | 1539 | Material** materials = 0; |
1537 | Geometry** geometries = 0; | 1540 | Geometry** geometries = 0; |
1538 | Mesh** meshes = 0; | 1541 | Mesh** meshes = 0; |
@@ -1659,13 +1662,6 @@ cleanup: | |||
1659 | free(load_texture_cmds); | 1662 | free(load_texture_cmds); |
1660 | } | 1663 | } |
1661 | if (textures) { | 1664 | if (textures) { |
1662 | if (!success) { | ||
1663 | for (cgltf_size i = 0; i < data->textures_count; ++i) { | ||
1664 | if (textures[i]) { | ||
1665 | gfx_destroy_texture(render_backend, &textures[i]); | ||
1666 | } | ||
1667 | } | ||
1668 | } | ||
1669 | free(textures); | 1665 | free(textures); |
1670 | } | 1666 | } |
1671 | if (materials) { | 1667 | if (materials) { |