"bufferdatasize_index16",
"bufferdatasize_index32",
"bufferdatasize_uniform",
- "animcache_vertexmesh_count",
- "animcache_vertexmesh_vertices",
- "animcache_vertexmesh_maxvertices",
"animcache_skeletal_count",
"animcache_skeletal_bones",
"animcache_skeletal_maxbones",
"dynamic_surfaces_because_tcmod_turbulent",
"dynamic_vertices_because_tcmod_turbulent",
"dynamic_triangles_because_tcmod_turbulent",
- "dynamic_batches_because_interleavedarrays",
- "dynamic_surfaces_because_interleavedarrays",
- "dynamic_vertices_because_interleavedarrays",
- "dynamic_triangles_because_interleavedarrays",
"dynamic_batches_because_nogaps",
"dynamic_surfaces_because_nogaps",
"dynamic_vertices_because_nogaps",
r_refdef.view.depth = 1;
r_refdef.view.useperspective = true;
r_refdef.view.isoverlay = false;
+ r_refdef.view.ismain = true;
r_refdef.view.frustum_x = 1; // tan(45 * M_PI / 180.0);
r_refdef.view.frustum_y = 1; // tan(45 * M_PI / 180.0);
VectorCopy(r_refdef.fogcolor, clearcolor);
}
// clear depth is 1.0
- // LordHavoc: we use a stencil centered around 128 instead of 0,
- // to avoid clamping interfering with strange shadow volume
- // drawing orders
// clear the screen
- GL_Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | (vid.stencil ? GL_STENCIL_BUFFER_BIT : 0), clearcolor, 1.0f, 128);
+ GL_Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | (vid.stencil ? GL_STENCIL_BUFFER_BIT : 0), clearcolor, 1.0f, 0);
}
int r_stereo_side;
+extern cvar_t v_isometric;
+extern cvar_t v_isometric_verticalfov;
static void SCR_DrawScreen (void)
{
R_UpdateVariables();
+ // this will be set back to 0 by R_RenderView during CL_VM_UpdateView
+ r_refdef.draw2dstage = 1;
+ R_ResetViewRendering2D_Common(0, NULL, NULL, 0, 0, vid.width, vid.height, vid_conwidth.integer, vid_conheight.integer);
+
// Quake uses clockwise winding, so these are swapped
r_refdef.view.cullface_front = GL_BACK;
r_refdef.view.cullface_back = GL_FRONT;
// for a 4x3 display, if the ratio is not 4x3 this makes the fov
// higher/lower according to the ratio
r_refdef.view.useperspective = true;
- r_refdef.view.frustum_y = tan(scr_fov.value * M_PI / 360.0) * (3.0/4.0) * cl.viewzoom;
+ r_refdef.view.frustum_y = tan(scr_fov.value * M_PI / 360.0) * (3.0 / 4.0) * cl.viewzoom;
r_refdef.view.frustum_x = r_refdef.view.frustum_y * (float)r_refdef.view.width / (float)r_refdef.view.height / vid_pixelheight.value;
r_refdef.view.frustum_x *= r_refdef.frustumscale_x;
r_refdef.view.ortho_x = atan(r_refdef.view.frustum_x) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView
r_refdef.view.ortho_y = atan(r_refdef.view.frustum_y) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView
+ r_refdef.view.ismain = true;
+
// if CSQC is loaded, it is required to provide the CSQC_UpdateView function,
// and won't render a view if it does not call that.
if (cl.csqc_loaded)
SCR_ClearLoadingScreenTexture();
- if (vid.support.arb_texture_non_power_of_two)
- {
- w = vid.width; h = vid.height;
- loadingscreentexture_w = loadingscreentexture_h = 1;
- }
- else
- {
- w = CeilPowerOf2(vid.width); h = CeilPowerOf2(vid.height);
- loadingscreentexture_w = vid.width / (float) w;
- loadingscreentexture_h = vid.height / (float) h;
- }
+ w = vid.width; h = vid.height;
+ loadingscreentexture_w = loadingscreentexture_h = 1;
loadingscreentexture = R_LoadTexture2D(r_main_texturepool, "loadingscreentexture", w, h, NULL, TEXTYPE_COLORBUFFER, TEXF_RENDERTARGET | TEXF_FORCENEAREST | TEXF_CLAMP, -1, NULL);
R_Mesh_CopyToTexture(loadingscreentexture, 0, 0, 0, 0, vid.width, vid.height);
if(loadingscreentexture)
{
R_Mesh_PrepareVertices_Generic_Arrays(4, loadingscreentexture_vertex3f, NULL, loadingscreentexture_texcoord2f);
- R_SetupShader_Generic(loadingscreentexture, NULL, GL_MODULATE, 1, false, true, true);
+ R_SetupShader_Generic(loadingscreentexture, false, true, true);
R_Mesh_Draw(0, 4, 0, 2, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
}
R_Mesh_PrepareVertices_Generic_Arrays(4, loadingscreenpic_vertex3f, NULL, loadingscreenpic_texcoord2f);
- R_SetupShader_Generic(Draw_GetPicTexture(loadingscreenpic), NULL, GL_MODULATE, 1, true, true, false);
+ R_SetupShader_Generic(Draw_GetPicTexture(loadingscreenpic), true, true, false);
R_Mesh_Draw(0, 4, 0, 2, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
SCR_DrawLoadingStack();
}
{
CHECKGLERROR
qglDrawBuffer(GL_BACK);CHECKGLERROR
- // set dithering mode
- if (gl_dither.integer)
- {
- qglEnable(GL_DITHER);CHECKGLERROR
- }
- else
- {
- qglDisable(GL_DITHER);CHECKGLERROR
- }
}
#endif
// calculate r_refdef.view.quality
r_refdef.view.quality = cl_updatescreen_quality;
-#ifndef USE_GLES2
- if (qglPolygonStipple)
+ if(scr_stipple.integer)
{
- if(scr_stipple.integer)
- {
- GLubyte stipple[128];
- int i, s, width, parts;
- static int frame = 0;
- ++frame;
-
- s = scr_stipple.integer;
- parts = (s & 007);
- width = (s & 070) >> 3;
-
- qglEnable(GL_POLYGON_STIPPLE);CHECKGLERROR // 0x0B42
- for(i = 0; i < 128; ++i)
- {
- int line = i/4;
- stipple[i] = (((line >> width) + frame) & ((1 << parts) - 1)) ? 0x00 : 0xFF;
- }
- qglPolygonStipple(stipple);CHECKGLERROR
- }
- else
- {
- qglDisable(GL_POLYGON_STIPPLE);CHECKGLERROR
- }
+ Con_Print("FIXME: scr_stipple not implemented\n");
+ Cvar_SetValueQuick(&scr_stipple, 0);
}
-#endif
#ifndef USE_GLES2
if (R_Stereo_Active())