mirror of
https://github.com/nzp-team/glquake.git
synced 2024-11-10 06:31:35 +00:00
Fix weird loading error of prog textures, causing distortion
This commit is contained in:
parent
332db268c5
commit
f7b50afd73
4 changed files with 12 additions and 16 deletions
BIN
nzportable.3dsx
BIN
nzportable.3dsx
Binary file not shown.
BIN
nzportable.elf
BIN
nzportable.elf
Binary file not shown.
|
@ -1368,10 +1368,10 @@ void GL_MipMap8Bit (byte *in, int width, int height)
|
||||||
GL_Upload32
|
GL_Upload32
|
||||||
===============
|
===============
|
||||||
*/
|
*/
|
||||||
void GL_Upload32 (byte *data, int width, int height, qboolean mipmap, qboolean alpha)
|
void GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean alpha)
|
||||||
{
|
{
|
||||||
int samples;
|
int samples;
|
||||||
static unsigned int scaled[1024*512]; // [512*256];
|
static unsigned scaled[1024*512]; // [512*256];
|
||||||
int scaled_width, scaled_height;
|
int scaled_width, scaled_height;
|
||||||
|
|
||||||
for (scaled_width = 1 ; scaled_width < width ; scaled_width<<=1)
|
for (scaled_width = 1 ; scaled_width < width ; scaled_width<<=1)
|
||||||
|
@ -1403,9 +1403,8 @@ void GL_Upload32 (byte *data, int width, int height, qboolean mipmap, qboolean
|
||||||
}
|
}
|
||||||
memcpy (scaled, data, width*height*4);
|
memcpy (scaled, data, width*height*4);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
GL_ResampleTexture ((unsigned *)data, width, height, scaled, scaled_width, scaled_height);
|
GL_ResampleTexture (data, width, height, scaled, scaled_width, scaled_height);
|
||||||
}
|
|
||||||
|
|
||||||
glTexImage2D (GL_TEXTURE_2D, 0, samples, scaled_width, scaled_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, scaled);
|
glTexImage2D (GL_TEXTURE_2D, 0, samples, scaled_width, scaled_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, scaled);
|
||||||
if (mipmap)
|
if (mipmap)
|
||||||
|
@ -1428,7 +1427,6 @@ void GL_Upload32 (byte *data, int width, int height, qboolean mipmap, qboolean
|
||||||
}
|
}
|
||||||
done: ;
|
done: ;
|
||||||
|
|
||||||
|
|
||||||
if (mipmap)
|
if (mipmap)
|
||||||
{
|
{
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min);
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min);
|
||||||
|
@ -1573,7 +1571,7 @@ static unsigned trans[640*480]; // FIXME, temporary
|
||||||
GL_Upload8_EXT (data, width, height, mipmap, alpha);
|
GL_Upload8_EXT (data, width, height, mipmap, alpha);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GL_Upload32 ((byte *)trans, width, height, mipmap, alpha);
|
GL_Upload32 (trans, width, height, mipmap, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Diabolickal TGA Begin
|
//Diabolickal TGA Begin
|
||||||
|
@ -1588,7 +1586,6 @@ int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolea
|
||||||
lhcsum = 0;
|
lhcsum = 0;
|
||||||
s = width*height*bytesperpixel;
|
s = width*height*bytesperpixel;
|
||||||
|
|
||||||
int ret_texnum = texture_extension_number;
|
|
||||||
for (i = 0;i < 256;i++) lhcsumtable[i] = i + 1;
|
for (i = 0;i < 256;i++) lhcsumtable[i] = i + 1;
|
||||||
for (i = 0;i < s;i++) lhcsum += (lhcsumtable[data[i] & 255]++);
|
for (i = 0;i < s;i++) lhcsum += (lhcsumtable[data[i] & 255]++);
|
||||||
// see if the texture is allready present
|
// see if the texture is allready present
|
||||||
|
@ -1600,8 +1597,8 @@ int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolea
|
||||||
{
|
{
|
||||||
if (lhcsum != glt->lhcsum || width != glt->width || height != glt->height)
|
if (lhcsum != glt->lhcsum || width != glt->width || height != glt->height)
|
||||||
{
|
{
|
||||||
Con_Printf("GL_LoadTexture: cache mismatch\n");
|
Con_DPrintf("GL_LoadTexture: cache mismatch\n");
|
||||||
Con_Printf("lhcsum: %d - %d\twidth: %d - %d\theight: %d - %d\n", lhcsum, glt->lhcsum, width, glt->width, height, glt->height);
|
Con_DPrintf("lhcsum: %d - %d\twidth: %d - %d\theight: %d - %d\n", lhcsum, glt->lhcsum, width, glt->width, height, glt->height);
|
||||||
goto GL_LoadTexture_setup;
|
goto GL_LoadTexture_setup;
|
||||||
}
|
}
|
||||||
return glt->texnum;
|
return glt->texnum;
|
||||||
|
@ -1613,7 +1610,6 @@ int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolea
|
||||||
glt = &gltextures[numgltextures];
|
glt = &gltextures[numgltextures];
|
||||||
numgltextures++;
|
numgltextures++;
|
||||||
glt->texnum = texture_extension_number;
|
glt->texnum = texture_extension_number;
|
||||||
ret_texnum = texture_extension_number;
|
|
||||||
texture_extension_number++;
|
texture_extension_number++;
|
||||||
|
|
||||||
strcpy (gltextures[glt->texnum].identifier, identifier);
|
strcpy (gltextures[glt->texnum].identifier, identifier);
|
||||||
|
@ -1622,7 +1618,7 @@ int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolea
|
||||||
|
|
||||||
// naievil -- why do we have this twice lol
|
// naievil -- why do we have this twice lol
|
||||||
gltextures[glt->texnum].checksum = lhcsum;
|
gltextures[glt->texnum].checksum = lhcsum;
|
||||||
gltextures[glt->texnum].lhcsum = lhcsum;
|
//gltextures[glt->texnum].lhcsum = lhcsum;
|
||||||
|
|
||||||
gltextures[glt->texnum].width = width;
|
gltextures[glt->texnum].width = width;
|
||||||
gltextures[glt->texnum].height = height;
|
gltextures[glt->texnum].height = height;
|
||||||
|
@ -1638,14 +1634,14 @@ int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolea
|
||||||
GL_Upload8 (data, width, height, mipmap, alpha);
|
GL_Upload8 (data, width, height, mipmap, alpha);
|
||||||
}
|
}
|
||||||
else if (bytesperpixel == 4) {
|
else if (bytesperpixel == 4) {
|
||||||
GL_Upload32 (data, width, height, mipmap, true);
|
GL_Upload32 ((unsigned*)data, width, height, mipmap, true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Sys_Error("GL_LoadTexture: unknown bytesperpixel\n");
|
Sys_Error("GL_LoadTexture: unknown bytesperpixel\n");
|
||||||
}
|
}
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||||
}
|
}
|
||||||
return ret_texnum;
|
return glt->texnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Diabolickal TGA End
|
//Diabolickal TGA End
|
||||||
|
@ -1701,7 +1697,7 @@ int GL_LoadTexture32 (char *identifier, int width, int height, byte *data, qbool
|
||||||
data[4 * i + 2] = gammatable[data[4 * i + 2]];
|
data[4 * i + 2] = gammatable[data[4 * i + 2]];
|
||||||
}
|
}
|
||||||
|
|
||||||
GL_Upload32 (data, width, height, mipmap, alpha);
|
GL_Upload32 ((unsigned *)data, width, height, mipmap, alpha);
|
||||||
|
|
||||||
texture_extension_number++;
|
texture_extension_number++;
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ extern int texture_mode;
|
||||||
|
|
||||||
extern float gldepthmin, gldepthmax;
|
extern float gldepthmin, gldepthmax;
|
||||||
|
|
||||||
void GL_Upload32 (byte *data, int width, int height, qboolean mipmap, qboolean alpha);
|
void GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean alpha);
|
||||||
void GL_Upload8 (byte *data, int width, int height, qboolean mipmap, qboolean alpha);
|
void GL_Upload8 (byte *data, int width, int height, qboolean mipmap, qboolean alpha);
|
||||||
int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolean mipmap, qboolean alpha, int bytesperpixel);
|
int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolean mipmap, qboolean alpha, int bytesperpixel);
|
||||||
int GL_FindTexture (char *identifier);
|
int GL_FindTexture (char *identifier);
|
||||||
|
|
Loading…
Reference in a new issue