00001 #include <cl.h> 00002 00003 /* 00004 clClear*() 00005 00006 00007 */ 00008 00009 CLimage* clClearImage(CLimage* image) 00010 { 00011 if(image->data) 00012 free(image->data); 00013 00014 return image; 00015 } 00016 00017 CLlight* clClearLight(CLlight* light) 00018 { 00019 glDeleteLists(light->display_list, 1); 00020 00021 return light; 00022 } 00023 00024 CLmaterial* clClearMaterial(CLmaterial* material) 00025 { 00026 /* MacOSX has a problem with deleting list zero, so this check was added, seems sensible */ 00027 if (material->display_list) 00028 { 00029 glDeleteLists(material->display_list, 1); 00030 } 00031 00032 return material; 00033 } 00034 00035 CLtexture* clClearTexture(CLtexture* texture) 00036 { 00037 clClearImage(&texture->image); 00038 00039 if (texture->texture_object) 00040 { 00041 glDeleteTextures(1, &texture->texture_object); 00042 } 00043 00044 return texture; 00045 } 00046 00047 CLprimitiveset* clClearPrimitiveSet(CLprimitiveset* primitiveset) 00048 { 00049 free(primitiveset->indices); 00050 00051 return primitiveset; 00052 } 00053 00054 CLmesh* clClearMesh(CLmesh* mesh) 00055 { 00056 unsigned int i; 00057 00058 free(mesh->colour); 00059 00060 free(mesh->vertices); 00061 free(mesh->colours); 00062 free(mesh->normals); 00063 free(mesh->texcoords); 00064 free(mesh->edgeflags); 00065 00066 for (i = 0; i < mesh->num_primitivesets; i++) 00067 { 00068 clDeletePrimitiveSet(mesh->primitivesets[i]); 00069 } 00070 free(mesh->primitivesets); 00071 00072 /* MacOSX has a problem with deleting list zero, so this check was added, seems sensible */ 00073 if (mesh->display_list) 00074 { 00075 glDeleteLists(mesh->display_list, 1); 00076 } 00077 00078 return mesh; 00079 } 00080 00081 CLcontext* clClearContext(CLcontext* context) 00082 { 00083 unsigned int i; 00084 00085 for (i = 0 ; i < context->num_materials ; i++) 00086 { 00087 clDeleteMaterial(context->materials[i]); 00088 } 00089 free(context->materials); 00090 00091 for (i = 0 ; i < context->num_textures ; i++) 00092 { 00093 clDeleteTexture(context->textures[i]); 00094 } 00095 free(context->textures); 00096 00097 for (i = 0 ; i < context->num_lights ; i++) 00098 { 00099 clDeleteLight(context->lights[i]); 00100 } 00101 free(context->lights); 00102 00103 for (i = 0 ; i < context->num_models ; i++) 00104 { 00105 clDeleteModel(context->models[i]); 00106 } 00107 free(context->models); 00108 00109 return context; 00110 } 00111 00112 CLmodel* clClearModel(CLmodel* model) 00113 { 00114 unsigned int i; 00115 00116 for (i = 0 ; i < model->num_meshes ; i++) 00117 { 00118 clDeleteMesh(model->meshes[i]); 00119 } 00120 free(model->meshes); 00121 00122 return model; 00123 }