mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-27 06:42:23 +00:00
Add case for when gl point parameters are not supported
This commit is contained in:
parent
af45aa56f1
commit
6a9f0c46d7
3 changed files with 42 additions and 16 deletions
|
@ -1671,22 +1671,8 @@ RI_BeginFrame(float camera_separation)
|
||||||
|
|
||||||
if (gl1_particle_square->modified)
|
if (gl1_particle_square->modified)
|
||||||
{
|
{
|
||||||
|
R_InitParticleTexture();
|
||||||
gl1_particle_square->modified = false;
|
gl1_particle_square->modified = false;
|
||||||
|
|
||||||
/* yamagi: GL_POINT_SMOOTH is not implemented by some
|
|
||||||
OpenGL drivers, especially the crappy Mesa3D backends
|
|
||||||
like i915.so. That the points are squares and not
|
|
||||||
circles is not a problem by Quake II! */
|
|
||||||
|
|
||||||
switch ((int)gl1_particle_square->value)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
glDisable(GL_POINT_SMOOTH);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
glEnable(GL_POINT_SMOOTH);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* draw buffer stuff */
|
/* draw buffer stuff */
|
||||||
|
|
|
@ -45,6 +45,25 @@ static byte dottexture[16][16] = {
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static byte squaretexture[16][16] = {
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
static byte notex[4][4] = {
|
static byte notex[4][4] = {
|
||||||
{0, 0, 0, 0},
|
{0, 0, 0, 0},
|
||||||
{0, 0, 1, 1},
|
{0, 0, 1, 1},
|
||||||
|
@ -68,6 +87,13 @@ R_InitParticleTexture(void)
|
||||||
byte partData[16][16][4];
|
byte partData[16][16][4];
|
||||||
byte notexData[8][8][4];
|
byte notexData[8][8][4];
|
||||||
|
|
||||||
|
byte (*sourcetexture)[16][16] = &dottexture;
|
||||||
|
|
||||||
|
if (gl1_particle_square->value)
|
||||||
|
{
|
||||||
|
sourcetexture = &squaretexture;
|
||||||
|
}
|
||||||
|
|
||||||
/* particle texture */
|
/* particle texture */
|
||||||
for (x = 0; x < 16; x++)
|
for (x = 0; x < 16; x++)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +102,7 @@ R_InitParticleTexture(void)
|
||||||
partData[y][x][0] = 255;
|
partData[y][x][0] = 255;
|
||||||
partData[y][x][1] = 255;
|
partData[y][x][1] = 255;
|
||||||
partData[y][x][2] = 255;
|
partData[y][x][2] = 255;
|
||||||
partData[y][x][3] = dottexture[x][y] * 85;
|
partData[y][x][3] = *sourcetexture[x][y] * 85;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,6 +215,19 @@ R_SetDefaultState(void)
|
||||||
attenuations[1] = gl1_particle_att_b->value;
|
attenuations[1] = gl1_particle_att_b->value;
|
||||||
attenuations[2] = gl1_particle_att_c->value;
|
attenuations[2] = gl1_particle_att_c->value;
|
||||||
|
|
||||||
|
/* GL_POINT_SMOOTH is not implemented by some OpenGL
|
||||||
|
drivers, especially the crappy Mesa3D backends like
|
||||||
|
i915.so. That the points are squares and not circles
|
||||||
|
is not a problem by Quake II! */
|
||||||
|
if (gl1_particle_square->value)
|
||||||
|
{
|
||||||
|
glDisable(GL_POINT_SMOOTH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glEnable(GL_POINT_SMOOTH);
|
||||||
|
}
|
||||||
|
|
||||||
qglPointParameterfARB(GL_POINT_SIZE_MIN_EXT, gl1_particle_min_size->value);
|
qglPointParameterfARB(GL_POINT_SIZE_MIN_EXT, gl1_particle_min_size->value);
|
||||||
qglPointParameterfARB(GL_POINT_SIZE_MAX_EXT, gl1_particle_max_size->value);
|
qglPointParameterfARB(GL_POINT_SIZE_MAX_EXT, gl1_particle_max_size->value);
|
||||||
qglPointParameterfvARB(GL_DISTANCE_ATTENUATION_EXT, attenuations);
|
qglPointParameterfvARB(GL_DISTANCE_ATTENUATION_EXT, attenuations);
|
||||||
|
|
|
@ -187,6 +187,7 @@ extern cvar_t *gl1_particle_size;
|
||||||
extern cvar_t *gl1_particle_att_a;
|
extern cvar_t *gl1_particle_att_a;
|
||||||
extern cvar_t *gl1_particle_att_b;
|
extern cvar_t *gl1_particle_att_b;
|
||||||
extern cvar_t *gl1_particle_att_c;
|
extern cvar_t *gl1_particle_att_c;
|
||||||
|
extern cvar_t *gl1_particle_square;
|
||||||
|
|
||||||
extern cvar_t *r_mode;
|
extern cvar_t *r_mode;
|
||||||
extern cvar_t *r_customwidth;
|
extern cvar_t *r_customwidth;
|
||||||
|
|
Loading…
Reference in a new issue