summaryrefslogtreecommitdiff
path: root/scene.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-07-05 18:16:49 +0000
committerrodri <rgl@antares-labs.eu>2024-07-05 18:16:49 +0000
commit714038d0bce05c734d4e45289ec2bf1174463e4a (patch)
tree19fab85f0e561dcb831137aa676c994bc499ed58 /scene.c
parent6d8fbc2953c6ae29ee5162ca04920d6cef85d0ce (diff)
downloadlibgraphics-714038d0bce05c734d4e45289ec2bf1174463e4a.tar.gz
libgraphics-714038d0bce05c734d4e45289ec2bf1174463e4a.tar.bz2
libgraphics-714038d0bce05c734d4e45289ec2bf1174463e4a.zip
create a new texture interface.
Diffstat (limited to 'scene.c')
-rw-r--r--scene.c20
1 files changed, 11 insertions, 9 deletions
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);