while (pool->gltchain)
R_FreeTexture((rtexture_t *)pool->gltchain);
if (pool->imagechain)
- Sys_Error("R_FreeTexturePool: not all images freed\n");
+ Con_Printf("R_FreeTexturePool: not all images freed\n");
Mem_Free(pool);
}
for (image = pool->imagechain;image;image = image->imagechain)
{
// only update already uploaded images
- if (!(image->flags & GLTEXF_UPLOAD))
+ if (!(image->flags & GLTEXF_UPLOAD) && (image->flags & TEXF_MIPMAP))
{
qglGetIntegerv(gltexturetypebindingenums[image->texturetype], &oldbindtexnum);
CHECKGLERROR
- if (gl_support_anisotropy)
+ if (gl_support_anisotropy && (flags & TEXF_MIPMAP))
{
int aniso = bound(1, gl_texture_anisotropy.integer, gl_max_anisotropy);
if (gl_texture_anisotropy.integer != aniso)
image = Mem_Alloc(texturemempool, sizeof(gltextureimage_t));
if (image == NULL)
- Sys_Error("R_FindImageForTexture: ran out of memory\n");
+ {
+ Con_Printf ("R_FindImageForTexture: ran out of memory\n");
+ return;
+ }
image->type = GLIMAGETYPE_FRAGMENTS;
// make sure the created image is big enough for the fragment
for (image->width = block_size;image->width < glt->width;image->width <<= 1);
image = Mem_Alloc(texturemempool, sizeof(gltextureimage_t));
if (image == NULL)
- Sys_Error("R_FindImageForTexture: ran out of memory\n");
+ {
+ Con_Printf ("R_FindImageForTexture: ran out of memory\n");
+ return;
+ }
image->type = GLIMAGETYPE_TILE;
image->blockallocation = NULL;
return NULL;
if (flags & TEXF_FRAGMENT && texturetype != GLTEXTURETYPE_2D)
- Sys_Error("R_LoadTexture: only 2D fragment textures implemented\n");
+ {
+ Con_Printf ("R_LoadTexture: only 2D fragment textures implemented\n");
+ return NULL;
+ }
if (texturetype == GLTEXTURETYPE_CUBEMAP && !gl_texturecubemap)
- Sys_Error("R_LoadTexture: cubemap texture not supported by driver\n");
+ {
+ Con_Printf ("R_LoadTexture: cubemap texture not supported by driver\n");
+ return NULL;
+ }
if (texturetype == GLTEXTURETYPE_3D && !gl_texture3d)
- Sys_Error("R_LoadTexture: 3d texture not supported by driver\n");
+ {
+ Con_Printf ("R_LoadTexture: 3d texture not supported by driver\n");
+ return NULL;
+ }
texinfo = R_GetTexTypeInfo(textype, flags);
size = width * height * depth * sides * texinfo->inputbytesperpixel;
if (size < 1)
- Sys_Error("R_LoadTexture: bogus texture size (%dx%dx%dx%dbppx%dsides = %d bytes)\n", width, height, depth, texinfo->inputbytesperpixel * 8, sides);
+ {
+ Con_Printf ("R_LoadTexture: bogus texture size (%dx%dx%dx%dbppx%dsides = %d bytes)\n", width, height, depth, texinfo->inputbytesperpixel * 8, sides);
+ return NULL;
+ }
// clear the alpha flag if the texture has no transparent pixels
switch(textype)
{
glt->inputtexels = Mem_Alloc(texturemempool, size);
if (glt->inputtexels == NULL)
- Sys_Error("R_LoadTexture: out of memory\n");
- memcpy(glt->inputtexels, data, size);
+ Con_Printf ("R_LoadTexture: out of memory\n");
+ else
+ memcpy(glt->inputtexels, data, size);
}
else
glt->inputtexels = NULL;