From 714038d0bce05c734d4e45289ec2bf1174463e4a Mon Sep 17 00:00:00 2001 From: rodri Date: Fri, 5 Jul 2024 18:16:49 +0000 Subject: create a new texture interface. --- scene.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'scene.c') diff --git a/scene.c b/scene.c index f003e83..c11588d 100644 --- a/scene.c +++ b/scene.c @@ -165,17 +165,19 @@ loadobjmodel(Model *m, OBJ *obj) mtl->shininess = objmtl->Ns; if(objmtl->map_Kd != nil){ - mtl->diffusemap = allocmemimaged(objmtl->map_Kd->r, objmtl->map_Kd->chan, objmtl->map_Kd->data); - if(mtl->diffusemap == nil) + mtl->diffusemap = alloctexture(sRGBTexture, nil); + mtl->diffusemap->image = allocmemimaged(objmtl->map_Kd->r, objmtl->map_Kd->chan, objmtl->map_Kd->data); + if(mtl->diffusemap->image == nil) sysfatal("allocmemimaged: %r"); - mtl->diffusemap->data->ref++; + mtl->diffusemap->image->data->ref++; } if(objmtl->norm != nil){ - mtl->normalmap = allocmemimaged(objmtl->norm->r, objmtl->norm->chan, objmtl->norm->data); - if(mtl->normalmap == nil) + mtl->normalmap = alloctexture(RAWTexture, nil); + mtl->normalmap->image = allocmemimaged(objmtl->norm->r, objmtl->norm->chan, objmtl->norm->data); + if(mtl->normalmap->image == nil) sysfatal("allocmemimaged: %r"); - mtl->normalmap->data->ref++; + mtl->normalmap->image->data->ref++; } addmtlmap(&mtlmap, objmtl, m->nmaterials-1); @@ -323,11 +325,11 @@ delmodel(Model *m) if(m == nil) return; if(m->tex != nil) - freememimage(m->tex); + freetexture(m->tex); if(m->nmaterials > 0){ while(m->nmaterials--){ - freememimage(m->materials[m->nmaterials].diffusemap); - freememimage(m->materials[m->nmaterials].normalmap); + freetexture(m->materials[m->nmaterials].diffusemap); + freetexture(m->materials[m->nmaterials].normalmap); free(m->materials[m->nmaterials].name); } free(m->materials); -- cgit v1.2.3