diff options
author | rodri <rgl@antares-labs.eu> | 2024-07-05 18:16:49 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-07-05 18:16:49 +0000 |
commit | 714038d0bce05c734d4e45289ec2bf1174463e4a (patch) | |
tree | 19fab85f0e561dcb831137aa676c994bc499ed58 /scene.c | |
parent | 6d8fbc2953c6ae29ee5162ca04920d6cef85d0ce (diff) | |
download | libgraphics-714038d0bce05c734d4e45289ec2bf1174463e4a.tar.gz libgraphics-714038d0bce05c734d4e45289ec2bf1174463e4a.tar.bz2 libgraphics-714038d0bce05c734d4e45289ec2bf1174463e4a.zip |
create a new texture interface.
Diffstat (limited to 'scene.c')
-rw-r--r-- | scene.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -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); |