/
d.vision
/
division_engine_core
Обзор
Документация
Войти
/
d.vision
/
division_engine_core
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/texture.c
68 строк
2 KB
Den163
Renamed all division_engine to division for convenient typing
20 май 2025, 00:20
20 май 2025, 00:20
683494c
Код
Авторство
О чём код?
#include "division_engine_core/texture.h" #include "division_engine_core/texture_internal.h" #include "division_engine_core/platform_internal/platform_texture.h" #include <stdlib.h> bool division_texture_context_alloc( DivisionContext* ctx, const DivisionSettings* settings ) { ctx->texture_context = (DivisionTextureContext*)malloc(sizeof(DivisionTextureContext)); ctx->texture_context->textures = NULL; ctx->texture_context->texture_count = 0; division_unordered_id_table_alloc(&ctx->texture_context->id_table, 10); return division_internal_platform_texture_context_alloc(ctx, settings); } void division_texture_context_free(DivisionContext* ctx) { division_internal_platform_texture_context_free(ctx); division_unordered_id_table_free(&ctx->texture_context->id_table); free(ctx->texture_context->textures); free(ctx->texture_context); } bool division_texture_alloc( DivisionContext* ctx, const DivisionTexture* texture, uint32_t* out_texture_id ) { DivisionTextureContext* tex_ctx = ctx->texture_context; uint32_t tex_id = division_unordered_id_table_new_id(&tex_ctx->id_table); if (tex_id >= tex_ctx->texture_count) { size_t new_size = tex_id + 1; tex_ctx->textures = realloc(tex_ctx->textures, sizeof(DivisionTexture[new_size])); if (tex_ctx->textures == NULL || !division_internal_platform_texture_realloc(ctx, new_size)) { ctx->lifecycle.error_callback( ctx, DIVISION_INTERNAL_ERROR, "Failed to realloc new textures buffers" ); return false; } tex_ctx->texture_count = new_size; } tex_ctx->textures[tex_id] = *texture; *out_texture_id = tex_id; return division_internal_platform_texture_impl_init_new_element(ctx, tex_id); } void division_texture_free(DivisionContext* ctx, uint32_t texture_id) { division_internal_platform_texture_free(ctx, texture_id); division_unordered_id_table_remove_id(&ctx->texture_context->id_table, texture_id); } void division_texture_set_data( DivisionContext* ctx, uint32_t texture_id, const void* data ) { division_internal_platform_texture_set_data(ctx, texture_id, data); }