mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-26 22:31:05 +00:00
Fixed .tga loading for GL targets. SW targets still need work in all
likelyhood.
This commit is contained in:
parent
8ed5962b22
commit
e2061095a6
1 changed files with 39 additions and 29 deletions
|
@ -176,28 +176,35 @@ Draw_PicFromWad (const char *name)
|
||||||
{
|
{
|
||||||
glpic_t *gl;
|
glpic_t *gl;
|
||||||
qpic_t *p;
|
qpic_t *p;
|
||||||
char filename[MAX_QPATH + 4];
|
char *filename;
|
||||||
QFile *f;
|
QFile *f;
|
||||||
tex_t *targa;
|
tex_t *targa;
|
||||||
|
|
||||||
p = W_GetLumpName (name);
|
|
||||||
gl = (glpic_t *) p->data;
|
|
||||||
|
|
||||||
snprintf (filename, sizeof (filename), "%s.tga", name);
|
|
||||||
|
filename = strdup (name);
|
||||||
|
if (!strcmp (filename + strlen(filename) - 4, ".lmp"))
|
||||||
|
strcpy (filename + strlen(filename) - 4, ".tga");
|
||||||
QFS_FOpenFile (filename, &f);
|
QFS_FOpenFile (filename, &f);
|
||||||
if (f) {
|
if (f) {
|
||||||
targa = LoadTGA (f);
|
targa = LoadTGA (f);
|
||||||
Qclose (f);
|
Qclose (f);
|
||||||
|
p = malloc (sizeof (qpic_t));
|
||||||
|
p->width = targa->width;
|
||||||
|
p->height = targa->height;
|
||||||
|
gl = (glpic_t *) p->data;
|
||||||
if (targa->format < 4)
|
if (targa->format < 4)
|
||||||
gl->texnum = GL_LoadTexture (name, targa->width,
|
gl->texnum = GL_LoadTexture (name, targa->width,
|
||||||
targa->height, targa->data, false, false, 3);
|
targa->height, targa->data, false, false, 3);
|
||||||
else
|
else
|
||||||
gl->texnum = GL_LoadTexture (name, targa->width,
|
gl->texnum = GL_LoadTexture (name, targa->width,
|
||||||
targa->height, targa->data, false, true, 4);
|
targa->height, targa->data, false, true, 4);
|
||||||
return p;
|
} else {
|
||||||
}
|
p = W_GetLumpName (name);
|
||||||
gl->texnum = GL_LoadTexture (name, p->width, p->height,
|
gl = (glpic_t *) p->data;
|
||||||
|
gl->texnum = GL_LoadTexture (name, p->width, p->height,
|
||||||
p->data, false, true, 1);
|
p->data, false, true, 1);
|
||||||
|
}
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,9 +225,9 @@ Draw_CachePic (const char *path, qboolean alpha)
|
||||||
int i;
|
int i;
|
||||||
glpic_t *gl;
|
glpic_t *gl;
|
||||||
qpic_t *dat;
|
qpic_t *dat;
|
||||||
char filename[MAX_QPATH + 4];
|
|
||||||
QFile *f;
|
QFile *f;
|
||||||
tex_t *targa;
|
tex_t *targa;
|
||||||
|
char *filename;
|
||||||
|
|
||||||
// First, check if its cached..
|
// First, check if its cached..
|
||||||
for (pic = cachepics, i = 0; i < numcachepics; pic++, i++)
|
for (pic = cachepics, i = 0; i < numcachepics; pic++, i++)
|
||||||
|
@ -231,27 +238,12 @@ Draw_CachePic (const char *path, qboolean alpha)
|
||||||
if (numcachepics == MAX_CACHED_PICS)
|
if (numcachepics == MAX_CACHED_PICS)
|
||||||
Sys_Error ("menu_numcachepics == MAX_CACHED_PICS");
|
Sys_Error ("menu_numcachepics == MAX_CACHED_PICS");
|
||||||
|
|
||||||
// Load the picture..
|
|
||||||
dat = (qpic_t *) QFS_LoadTempFile (path);
|
|
||||||
if (!dat)
|
|
||||||
Sys_Error ("Draw_CachePic: failed to load %s", path);
|
|
||||||
|
|
||||||
// Adjust for endian..
|
|
||||||
SwapPic (dat);
|
|
||||||
|
|
||||||
// Ok, the image is here, lets load it up into the cache..
|
|
||||||
|
|
||||||
// First the image name..
|
|
||||||
strncpy (pic->name, path, sizeof (pic->name));
|
|
||||||
|
|
||||||
// Now the width and height.
|
|
||||||
pic->pic.width = dat->width;
|
|
||||||
pic->pic.height = dat->height;
|
|
||||||
|
|
||||||
// Now feed it to the GL stuff and get a texture number..
|
|
||||||
gl = (glpic_t *) pic->pic.data;
|
gl = (glpic_t *) pic->pic.data;
|
||||||
|
|
||||||
snprintf (filename, sizeof (filename), "%s.tga", path);
|
// Check for a .tga first
|
||||||
|
filename = strdup (path);
|
||||||
|
if (!strcmp (filename + strlen(filename) - 4, ".lmp"))
|
||||||
|
strcpy (filename + strlen(filename) - 4, ".tga");
|
||||||
QFS_FOpenFile (filename, &f);
|
QFS_FOpenFile (filename, &f);
|
||||||
if (f) {
|
if (f) {
|
||||||
targa = LoadTGA (f);
|
targa = LoadTGA (f);
|
||||||
|
@ -262,10 +254,26 @@ Draw_CachePic (const char *path, qboolean alpha)
|
||||||
else
|
else
|
||||||
gl->texnum = GL_LoadTexture ("", targa->width, targa->height,
|
gl->texnum = GL_LoadTexture ("", targa->width, targa->height,
|
||||||
targa->data, false, alpha, 4);
|
targa->data, false, alpha, 4);
|
||||||
}
|
pic->pic.width = targa->width;
|
||||||
else
|
pic->pic.height = targa->height;
|
||||||
|
} else if (!strcmp (path + strlen (path) - 4, ".lmp")) {
|
||||||
|
// Load the picture..
|
||||||
|
dat = (qpic_t *) QFS_LoadTempFile (path);
|
||||||
|
if (!dat)
|
||||||
|
Sys_Error ("Draw_CachePic: failed to load %s", path);
|
||||||
|
|
||||||
|
// Adjust for endian..
|
||||||
|
SwapPic (dat);
|
||||||
|
|
||||||
gl->texnum = GL_LoadTexture ("", dat->width, dat->height, dat->data,
|
gl->texnum = GL_LoadTexture ("", dat->width, dat->height, dat->data,
|
||||||
false, alpha, 1);
|
false, alpha, 1);
|
||||||
|
pic->pic.width = dat->width;
|
||||||
|
pic->pic.height = dat->height;
|
||||||
|
|
||||||
|
} else
|
||||||
|
Sys_Error ("Draw_CachePic: failed to load %s", path);
|
||||||
|
|
||||||
|
strncpy (pic->name, path, sizeof (pic->name));
|
||||||
|
|
||||||
// Now lets mark this cache entry as used..
|
// Now lets mark this cache entry as used..
|
||||||
pic->dirty = false;
|
pic->dirty = false;
|
||||||
|
@ -276,6 +284,8 @@ Draw_CachePic (const char *path, qboolean alpha)
|
||||||
if (!strcmp (path, "gfx/menuplyr.lmp"))
|
if (!strcmp (path, "gfx/menuplyr.lmp"))
|
||||||
memcpy (menuplyr_pixels, dat->data, dat->width * dat->height);
|
memcpy (menuplyr_pixels, dat->data, dat->width * dat->height);
|
||||||
|
|
||||||
|
free (filename);
|
||||||
|
|
||||||
// And now we are done, return what was asked for..
|
// And now we are done, return what was asked for..
|
||||||
return &pic->pic;
|
return &pic->pic;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue