mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-10 07:12:07 +00:00
Merge remote-tracking branch 'yquake2/master'
This commit is contained in:
commit
1775874418
12 changed files with 132 additions and 136 deletions
|
@ -492,11 +492,10 @@ Set `0` by default.
|
|||
value, at least `1.0` - default is `2.0`. Applied when textures are
|
||||
loaded, so it needs a `vid_restart`.
|
||||
|
||||
* **gl1_multitexture**: Enables (`1`) the blending of color and light
|
||||
textures on a single drawing pass; disabling this (`0`) does one pass
|
||||
for color and another for light. Default is `2`, which also enables
|
||||
texture combine mode (`GL_ARB_texture_env_combine`) when supported.
|
||||
Requires a `vid_restart` when changed.
|
||||
* **gl1_multitexture**: Enables (`1`, default) the blending of color and
|
||||
light textures on a single drawing pass; disabling this (`0`) does one
|
||||
pass for color and another for light. Requires a `vid_restart` when
|
||||
changed.
|
||||
|
||||
* **gl1_overbrightbits**: Enables overbright bits, brightness scaling of
|
||||
lightmaps and models. Higher values make shadows less dark. Possible
|
||||
|
@ -622,6 +621,10 @@ Set `0` by default.
|
|||
for people who hold the controller upright, or use a device with the
|
||||
controller attached to the screen, e.g. Steam Deck.
|
||||
|
||||
* **gyro_tightening**: Threshold of rotation in degrees per second,
|
||||
where gyro inputs below it will be dampened. Meant to counter a
|
||||
noisy gyro and involuntary hand movements. Default `3.5`.
|
||||
|
||||
* **gyro_calibration_(x/y/z)**: Offset values on each axis of the gyro
|
||||
which helps it reach true "zero movement", complete stillness. These
|
||||
values are wrong if you see your in-game view "drift" when leaving
|
||||
|
|
|
@ -33,6 +33,9 @@ int cl_numparticles = MAX_PARTICLES;
|
|||
void
|
||||
CL_ClearParticles(void)
|
||||
{
|
||||
if (cl_numparticles == 0)
|
||||
return;
|
||||
|
||||
int i;
|
||||
|
||||
free_particles = &particles[0];
|
||||
|
|
|
@ -162,6 +162,7 @@ cvar_t *gyro_turning_axis; // yaw or roll
|
|||
// Gyro sensitivity
|
||||
static cvar_t *gyro_yawsensitivity;
|
||||
static cvar_t *gyro_pitchsensitivity;
|
||||
static cvar_t *gyro_tightening;
|
||||
|
||||
// Gyro is being used in this very moment
|
||||
static qboolean gyro_active = false;
|
||||
|
@ -726,14 +727,9 @@ IN_Update(void)
|
|||
qboolean down = (event.type == SDL_CONTROLLERBUTTONDOWN);
|
||||
unsigned char btn = event.cbutton.button;
|
||||
|
||||
// Handle Back Button first, to override its original key
|
||||
if (btn == sdl_back_button)
|
||||
{
|
||||
Key_Event(K_JOY_BACK, down, true);
|
||||
break;
|
||||
}
|
||||
|
||||
Key_Event(K_BTN_A + btn, down, true);
|
||||
// Handle Back Button, to override its original key
|
||||
Key_Event( (btn == sdl_back_button)? K_JOY_BACK : K_BTN_A + btn,
|
||||
down, true );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1074,6 +1070,30 @@ IN_ApplyExpo(thumbstick_t stick, float exponent)
|
|||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Minimize gyro movement when under a small threshold.
|
||||
* http://gyrowiki.jibbsmart.com/blog:good-gyro-controls-part-1:the-gyro-is-a-mouse#toc9
|
||||
*/
|
||||
static thumbstick_t
|
||||
IN_TightenInput(float yaw, float pitch)
|
||||
{
|
||||
thumbstick_t input = { yaw, pitch };
|
||||
const float magnitude = IN_StickMagnitude(input);
|
||||
#ifdef NATIVE_SDL_GYRO
|
||||
const float threshold = (M_PI / 180.0f) * gyro_tightening->value;
|
||||
#else
|
||||
const float threshold = (2560.0f / 180.0f) * gyro_tightening->value;
|
||||
#endif
|
||||
|
||||
if (magnitude < threshold)
|
||||
{
|
||||
const float scale = magnitude / threshold;
|
||||
input.x *= scale;
|
||||
input.y *= scale;
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete flick stick's buffer of angle samples for smoothing
|
||||
*/
|
||||
|
@ -1203,6 +1223,7 @@ IN_Move(usercmd_t *cmd)
|
|||
static float joystick_yaw, joystick_pitch;
|
||||
static float joystick_forwardmove, joystick_sidemove;
|
||||
static thumbstick_t left_stick = {0}, right_stick = {0};
|
||||
thumbstick_t gyro_in = {0};
|
||||
|
||||
if (m_filter->value)
|
||||
{
|
||||
|
@ -1383,16 +1404,21 @@ IN_Move(usercmd_t *cmd)
|
|||
* cl_sidespeed->value * 2.0f * joystick_sidemove;
|
||||
}
|
||||
|
||||
if (gyro_yaw)
|
||||
if (gyro_yaw || gyro_pitch)
|
||||
{
|
||||
cl.viewangles[YAW] += m_yaw->value * gyro_yawsensitivity->value
|
||||
* cl_yawspeed->value * gyro_yaw * gyroViewFactor;
|
||||
gyro_in = IN_TightenInput(gyro_yaw, gyro_pitch);
|
||||
}
|
||||
|
||||
if (gyro_pitch)
|
||||
if (gyro_in.x)
|
||||
{
|
||||
cl.viewangles[YAW] += m_yaw->value * gyro_yawsensitivity->value
|
||||
* cl_yawspeed->value * gyro_in.x * gyroViewFactor;
|
||||
}
|
||||
|
||||
if (gyro_in.y)
|
||||
{
|
||||
cl.viewangles[PITCH] -= m_pitch->value * gyro_pitchsensitivity->value
|
||||
* cl_pitchspeed->value * gyro_pitch * gyroViewFactor;
|
||||
* cl_pitchspeed->value * gyro_in.y * gyroViewFactor;
|
||||
}
|
||||
|
||||
// Flick Stick: flick in progress, changing the yaw angle to the target progressively
|
||||
|
@ -2181,6 +2207,7 @@ IN_Init(void)
|
|||
|
||||
gyro_yawsensitivity = Cvar_Get("gyro_yawsensitivity", "1.0", CVAR_ARCHIVE);
|
||||
gyro_pitchsensitivity = Cvar_Get("gyro_pitchsensitivity", "1.0", CVAR_ARCHIVE);
|
||||
gyro_tightening = Cvar_Get("gyro_tightening", "3.5", CVAR_ARCHIVE);
|
||||
gyro_turning_axis = Cvar_Get("gyro_turning_axis", "0", CVAR_ARCHIVE);
|
||||
|
||||
gyro_mode = Cvar_Get("gyro_mode", "2", CVAR_ARCHIVE);
|
||||
|
|
|
@ -165,6 +165,7 @@ cvar_t *gyro_turning_axis; // yaw or roll
|
|||
// Gyro sensitivity
|
||||
static cvar_t *gyro_yawsensitivity;
|
||||
static cvar_t *gyro_pitchsensitivity;
|
||||
static cvar_t *gyro_tightening;
|
||||
|
||||
// Gyro is being used in this very moment
|
||||
static qboolean gyro_active = false;
|
||||
|
@ -717,14 +718,9 @@ IN_Update(void)
|
|||
qboolean down = (event.type == SDL_EVENT_GAMEPAD_BUTTON_DOWN);
|
||||
unsigned char btn = event.gbutton.button;
|
||||
|
||||
// Handle Back Button first, to override its original key
|
||||
if (btn == sdl_back_button)
|
||||
{
|
||||
Key_Event(K_JOY_BACK, down, true);
|
||||
break;
|
||||
}
|
||||
|
||||
Key_Event(K_BTN_A + btn, down, true);
|
||||
// Handle Back Button, to override its original key
|
||||
Key_Event( (btn == sdl_back_button)? K_JOY_BACK : K_BTN_A + btn,
|
||||
down, true );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1063,6 +1059,26 @@ IN_ApplyExpo(thumbstick_t stick, float exponent)
|
|||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Minimize gyro movement when under a small threshold.
|
||||
* http://gyrowiki.jibbsmart.com/blog:good-gyro-controls-part-1:the-gyro-is-a-mouse#toc9
|
||||
*/
|
||||
static thumbstick_t
|
||||
IN_TightenInput(float yaw, float pitch)
|
||||
{
|
||||
thumbstick_t input = { yaw, pitch };
|
||||
const float magnitude = IN_StickMagnitude(input);
|
||||
const float threshold = (M_PI / 180.0f) * gyro_tightening->value;
|
||||
|
||||
if (magnitude < threshold)
|
||||
{
|
||||
const float scale = magnitude / threshold;
|
||||
input.x *= scale;
|
||||
input.y *= scale;
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete flick stick's buffer of angle samples for smoothing
|
||||
*/
|
||||
|
@ -1192,6 +1208,7 @@ IN_Move(usercmd_t *cmd)
|
|||
static float joystick_yaw, joystick_pitch;
|
||||
static float joystick_forwardmove, joystick_sidemove;
|
||||
static thumbstick_t left_stick = {0}, right_stick = {0};
|
||||
thumbstick_t gyro_in = {0};
|
||||
|
||||
if (m_filter->value)
|
||||
{
|
||||
|
@ -1372,16 +1389,21 @@ IN_Move(usercmd_t *cmd)
|
|||
* cl_sidespeed->value * 2.0f * joystick_sidemove;
|
||||
}
|
||||
|
||||
if (gyro_yaw)
|
||||
if (gyro_yaw || gyro_pitch)
|
||||
{
|
||||
cl.viewangles[YAW] += m_yaw->value * gyro_yawsensitivity->value
|
||||
* cl_yawspeed->value * gyro_yaw * gyroViewFactor;
|
||||
gyro_in = IN_TightenInput(gyro_yaw, gyro_pitch);
|
||||
}
|
||||
|
||||
if (gyro_pitch)
|
||||
if (gyro_in.x)
|
||||
{
|
||||
cl.viewangles[YAW] += m_yaw->value * gyro_yawsensitivity->value
|
||||
* cl_yawspeed->value * gyro_in.x * gyroViewFactor;
|
||||
}
|
||||
|
||||
if (gyro_in.y)
|
||||
{
|
||||
cl.viewangles[PITCH] -= m_pitch->value * gyro_pitchsensitivity->value
|
||||
* cl_pitchspeed->value * gyro_pitch * gyroViewFactor;
|
||||
* cl_pitchspeed->value * gyro_in.y * gyroViewFactor;
|
||||
}
|
||||
|
||||
// Flick Stick: flick in progress, changing the yaw angle to the target progressively
|
||||
|
@ -2283,6 +2305,7 @@ IN_Init(void)
|
|||
|
||||
gyro_yawsensitivity = Cvar_Get("gyro_yawsensitivity", "1.0", CVAR_ARCHIVE);
|
||||
gyro_pitchsensitivity = Cvar_Get("gyro_pitchsensitivity", "1.0", CVAR_ARCHIVE);
|
||||
gyro_tightening = Cvar_Get("gyro_tightening", "3.5", CVAR_ARCHIVE);
|
||||
gyro_turning_axis = Cvar_Get("gyro_turning_axis", "0", CVAR_ARCHIVE);
|
||||
|
||||
gyro_mode = Cvar_Get("gyro_mode", "2", CVAR_ARCHIVE);
|
||||
|
|
|
@ -1787,6 +1787,7 @@ static menuslider_s s_gyro_yawsensitivity_slider;
|
|||
static menuslider_s s_gyro_pitchsensitivity_slider;
|
||||
static menulist_s s_gyro_invertyaw_box;
|
||||
static menulist_s s_gyro_invertpitch_box;
|
||||
static menuslider_s s_gyro_tightening_slider;
|
||||
static menuseparator_s s_calibrating_text[2];
|
||||
static menuaction_s s_calibrate_gyro;
|
||||
|
||||
|
@ -1924,6 +1925,15 @@ Gyro_MenuInit(void)
|
|||
s_gyro_invertpitch_box.itemnames = yesno_names;
|
||||
s_gyro_invertpitch_box.curvalue = (Cvar_VariableValue("gyro_pitchsensitivity") < 0);
|
||||
|
||||
s_gyro_tightening_slider.generic.type = MTYPE_SLIDER;
|
||||
s_gyro_tightening_slider.generic.x = 0;
|
||||
s_gyro_tightening_slider.generic.y = (y += 20);
|
||||
s_gyro_tightening_slider.generic.name = "tightening thresh";
|
||||
s_gyro_tightening_slider.cvar = "gyro_tightening";
|
||||
s_gyro_tightening_slider.minvalue = 0.0f;
|
||||
s_gyro_tightening_slider.maxvalue = 12.0f;
|
||||
s_gyro_tightening_slider.slidestep = 0.5f;
|
||||
|
||||
s_calibrating_text[0].generic.type = MTYPE_SEPARATOR;
|
||||
s_calibrating_text[0].generic.x = 48 * scale + 32;
|
||||
s_calibrating_text[0].generic.y = (y += 20);
|
||||
|
@ -1946,6 +1956,7 @@ Gyro_MenuInit(void)
|
|||
Menu_AddItem(&s_gyro_menu, (void *)&s_gyro_pitchsensitivity_slider);
|
||||
Menu_AddItem(&s_gyro_menu, (void *)&s_gyro_invertyaw_box);
|
||||
Menu_AddItem(&s_gyro_menu, (void *)&s_gyro_invertpitch_box);
|
||||
Menu_AddItem(&s_gyro_menu, (void *)&s_gyro_tightening_slider);
|
||||
Menu_AddItem(&s_gyro_menu, (void *)&s_calibrating_text[0]);
|
||||
Menu_AddItem(&s_gyro_menu, (void *)&s_calibrating_text[1]);
|
||||
Menu_AddItem(&s_gyro_menu, (void *)&s_calibrate_gyro);
|
||||
|
|
|
@ -613,14 +613,10 @@ Separator_Draw(menuseparator_s *s)
|
|||
void
|
||||
Slider_DoSlide(menuslider_s *s, int dir)
|
||||
{
|
||||
const float step = (s->slidestep)? s->slidestep : 0.1f;
|
||||
float value = Cvar_VariableValue(s->cvar);
|
||||
float step = 0.1f;
|
||||
float sign = 1.0f;
|
||||
|
||||
if (s->slidestep)
|
||||
{
|
||||
step = s->slidestep;
|
||||
}
|
||||
if (s->abs && value < 0) // absolute value treatment
|
||||
{
|
||||
value = -value;
|
||||
|
@ -641,48 +637,40 @@ Slider_DoSlide(menuslider_s *s, int dir)
|
|||
void
|
||||
Slider_Draw(menuslider_s *s)
|
||||
{
|
||||
const float scale = SCR_GetMenuScale();
|
||||
const int x = s->generic.parent->x + s->generic.x;
|
||||
const int y = s->generic.parent->y + s->generic.y;
|
||||
const int x_rcol = x + (RCOLUMN_OFFSET * scale);
|
||||
int i;
|
||||
char buffer[5];
|
||||
const char * format;
|
||||
float scale = SCR_GetMenuScale();
|
||||
int x = s->generic.parent->x + s->generic.x;
|
||||
int y = s->generic.parent->y + s->generic.y;
|
||||
|
||||
float value = Cvar_VariableValue(s->cvar);
|
||||
if (s->abs && value < 0) // absolute value
|
||||
{
|
||||
value = -value;
|
||||
}
|
||||
float range = (ClampCvar(s->minvalue, s->maxvalue, value) - s->minvalue) /
|
||||
const float range = (ClampCvar(s->minvalue, s->maxvalue, value) - s->minvalue) /
|
||||
(s->maxvalue - s->minvalue);
|
||||
|
||||
Menu_DrawStringR2LDark(x + (LCOLUMN_OFFSET * scale),
|
||||
y, s->generic.name);
|
||||
|
||||
Draw_CharScaled(x + (RCOLUMN_OFFSET * scale),
|
||||
Draw_CharScaled(x_rcol,
|
||||
y * scale, 128, scale);
|
||||
|
||||
for (i = 0; i < SLIDER_RANGE * scale; i++)
|
||||
{
|
||||
Draw_CharScaled(x + (RCOLUMN_OFFSET * scale) + (i * 8) + 8,
|
||||
Draw_CharScaled(x_rcol + (i * 8) + 8,
|
||||
y * scale, 129, scale);
|
||||
}
|
||||
|
||||
Draw_CharScaled(x + (RCOLUMN_OFFSET * scale) + (i * 8) + 8,
|
||||
Draw_CharScaled(x_rcol + (i * 8) + 8,
|
||||
y * scale, 130, scale);
|
||||
Draw_CharScaled(x + ((int)((RCOLUMN_OFFSET * scale) + (SLIDER_RANGE * scale - 1) * 8 * range)) + 8,
|
||||
Draw_CharScaled(x_rcol + (int)((SLIDER_RANGE * scale - 1) * 8 * range) + 8,
|
||||
y * scale, 131, scale);
|
||||
|
||||
if (!s->printformat)
|
||||
{
|
||||
format = "%.1f";
|
||||
}
|
||||
else
|
||||
{
|
||||
format = s->printformat;
|
||||
}
|
||||
snprintf(buffer, 5, format, value);
|
||||
Menu_DrawString(x + (RCOLUMN_OFFSET * scale) + ((SLIDER_RANGE + 2) * scale * 8),
|
||||
snprintf(buffer, 5, (s->printformat)? s->printformat : "%.1f", value);
|
||||
Menu_DrawString(x_rcol + ((SLIDER_RANGE + 2) * scale * 8),
|
||||
y, buffer);
|
||||
}
|
||||
|
||||
|
|
|
@ -234,47 +234,14 @@ R_EnableMultitexture(qboolean enable)
|
|||
{
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
if (gl_config.mtexcombine)
|
||||
if (gl_lightmap->value)
|
||||
{
|
||||
R_TexEnv(GL_COMBINE);
|
||||
|
||||
if (gl_lightmap->value)
|
||||
{
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
|
||||
}
|
||||
else
|
||||
{
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_PREVIOUS);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, GL_PREVIOUS);
|
||||
}
|
||||
|
||||
R_SelectTexture(GL_TEXTURE0);
|
||||
R_TexEnv(GL_COMBINE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
|
||||
return;
|
||||
R_TexEnv(GL_REPLACE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gl_lightmap->value)
|
||||
{
|
||||
R_TexEnv(GL_REPLACE);
|
||||
}
|
||||
else
|
||||
{
|
||||
R_TexEnv(GL_MODULATE);
|
||||
}
|
||||
R_TexEnv(GL_MODULATE);
|
||||
}
|
||||
|
||||
}
|
||||
else // disable multitexturing
|
||||
{
|
||||
|
|
|
@ -414,6 +414,7 @@ R_DrawEntitiesOnList(void)
|
|||
}
|
||||
|
||||
glDepthMask(GL_TRUE); /* back to writing */
|
||||
R_EnableMultitexture(false);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1233,7 +1234,7 @@ R_Register(void)
|
|||
|
||||
gl1_palettedtexture = ri.Cvar_Get("r_palettedtextures", "0", CVAR_ARCHIVE);
|
||||
gl1_pointparameters = ri.Cvar_Get("gl1_pointparameters", "1", CVAR_ARCHIVE);
|
||||
gl1_multitexture = ri.Cvar_Get("gl1_multitexture", "2", CVAR_ARCHIVE);
|
||||
gl1_multitexture = ri.Cvar_Get("gl1_multitexture", "1", CVAR_ARCHIVE);
|
||||
gl1_biglightmaps = ri.Cvar_Get("gl1_biglightmaps", "1", CVAR_ARCHIVE);
|
||||
|
||||
gl_drawbuffer = ri.Cvar_Get("gl_drawbuffer", "GL_BACK", 0);
|
||||
|
@ -1600,7 +1601,7 @@ RI_Init(void)
|
|||
// ----
|
||||
|
||||
/* Multitexturing */
|
||||
gl_config.multitexture = gl_config.mtexcombine = false;
|
||||
gl_config.multitexture = false;
|
||||
|
||||
R_Printf(PRINT_ALL, " - Multitexturing: ");
|
||||
|
||||
|
@ -1635,29 +1636,6 @@ RI_Init(void)
|
|||
|
||||
// ----
|
||||
|
||||
/* Multi texturing combine */
|
||||
R_Printf(PRINT_ALL, " - Multitexturing combine: ");
|
||||
|
||||
if ( ( strstr(gl_config.extensions_string, "GL_ARB_texture_env_combine")
|
||||
|| strstr(gl_config.extensions_string, "GL_EXT_texture_env_combine") ) )
|
||||
{
|
||||
if (gl_config.multitexture && gl1_multitexture->value > 1)
|
||||
{
|
||||
gl_config.mtexcombine = true;
|
||||
R_Printf(PRINT_ALL, "Okay\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
R_Printf(PRINT_ALL, "Disabled\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
R_Printf(PRINT_ALL, "Failed\n");
|
||||
}
|
||||
|
||||
// ----
|
||||
|
||||
/* Big lightmaps */
|
||||
R_Printf(PRINT_ALL, " - Big lightmaps: ");
|
||||
|
||||
|
|
|
@ -711,14 +711,12 @@ R_DrawAliasModel(entity_t *currententity, const model_t *currentmodel)
|
|||
glDisable(GL_CULL_FACE);
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glBegin(GL_TRIANGLE_STRIP);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
glVertex3fv(bbox[i]);
|
||||
}
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glVertexPointer(3, GL_FLOAT, 0, bbox);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 8);
|
||||
glDisableClientState(GL_VERTEX_ARRAY);
|
||||
|
||||
glEnd();
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
|
|
@ -740,7 +740,7 @@ static void
|
|||
R_RegenAllLightmaps()
|
||||
{
|
||||
int i, map, smax, tmax, top, bottom, left, right, bt, bb, bl, br;
|
||||
qboolean affected_lightmap;
|
||||
qboolean affected_lightmap, pixelstore_set = false;
|
||||
msurface_t *surf;
|
||||
byte *base;
|
||||
|
||||
|
@ -749,8 +749,6 @@ R_RegenAllLightmaps()
|
|||
return;
|
||||
}
|
||||
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, gl_state.block_width);
|
||||
|
||||
for (i = 1; i < gl_state.max_lightmaps; i++)
|
||||
{
|
||||
if (!gl_lms.lightmap_surfaces[i] || !gl_lms.lightmap_buffer[i])
|
||||
|
@ -811,6 +809,12 @@ R_RegenAllLightmaps()
|
|||
continue;
|
||||
}
|
||||
|
||||
if (!pixelstore_set)
|
||||
{
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, gl_state.block_width);
|
||||
pixelstore_set = true;
|
||||
}
|
||||
|
||||
base = gl_lms.lightmap_buffer[i];
|
||||
base += (bt * gl_state.block_width + bl) * LIGHTMAP_BYTES;
|
||||
|
||||
|
@ -820,7 +824,10 @@ R_RegenAllLightmaps()
|
|||
GL_LIGHTMAP_FORMAT, GL_UNSIGNED_BYTE, base);
|
||||
}
|
||||
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
if (pixelstore_set)
|
||||
{
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -891,12 +898,11 @@ R_DrawTextureChains(const entity_t *currententity)
|
|||
continue;
|
||||
}
|
||||
|
||||
R_Bind(image->texnum); // no danger of resetting in R_RenderBrushPoly
|
||||
|
||||
for (s = image->texturechain; s; s = s->texturechain)
|
||||
{
|
||||
if (s->flags & SURF_DRAWTURB)
|
||||
{
|
||||
R_Bind(image->texnum);
|
||||
R_RenderBrushPoly(currententity, s);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -340,7 +340,6 @@ typedef struct
|
|||
qboolean palettedtexture;
|
||||
qboolean pointparameters;
|
||||
qboolean multitexture;
|
||||
qboolean mtexcombine;
|
||||
|
||||
// ----
|
||||
|
||||
|
|
|
@ -57,14 +57,7 @@
|
|||
#define GL_TEXTURE1 0x84C1
|
||||
#define GL_MULTISAMPLE 0x809D
|
||||
#define GL_COMBINE 0x8570
|
||||
#define GL_COMBINE_RGB 0x8571
|
||||
#define GL_COMBINE_ALPHA 0x8572
|
||||
#define GL_SOURCE0_RGB 0x8580
|
||||
#define GL_SOURCE1_RGB 0x8581
|
||||
#define GL_SOURCE0_ALPHA 0x8588
|
||||
#define GL_SOURCE1_ALPHA 0x8589
|
||||
#define GL_RGB_SCALE 0x8573
|
||||
#define GL_PREVIOUS 0x8578
|
||||
#endif
|
||||
|
||||
#ifndef GL_EXT_shared_texture_palette
|
||||
|
|
Loading…
Reference in a new issue