void SCR_ScreenShot_f (void);
-// these are externally accessible
-int r_lightmapscalebit;
-float r_colorscale;
-
static matrix4x4_t backend_viewmatrix;
static matrix4x4_t backend_modelmatrix;
static matrix4x4_t backend_modelviewmatrix;
memset(&backend_modelmatrix, 0, sizeof(backend_modelmatrix));
}
-void GL_SetupView_Orientation_FromEntity (vec3_t origin, vec3_t angles)
+void GL_SetupView_Orientation_FromEntity(matrix4x4_t *matrix)
{
- Matrix4x4_CreateRotate(&backend_viewmatrix, -90, 1, 0, 0);
- Matrix4x4_ConcatRotate(&backend_viewmatrix, 90, 0, 0, 1);
- Matrix4x4_ConcatRotate(&backend_viewmatrix, -angles[2], 1, 0, 0);
- Matrix4x4_ConcatRotate(&backend_viewmatrix, -angles[0], 0, 1, 0);
- Matrix4x4_ConcatRotate(&backend_viewmatrix, -angles[1], 0, 0, 1);
- Matrix4x4_ConcatTranslate(&backend_viewmatrix, -origin[0], -origin[1], -origin[2]);
+ matrix4x4_t tempmatrix, basematrix;
+ Matrix4x4_Invert_Simple(&tempmatrix, matrix);
+ Matrix4x4_CreateRotate(&basematrix, -90, 1, 0, 0);
+ Matrix4x4_ConcatRotate(&basematrix, 90, 0, 0, 1);
+ Matrix4x4_Concat(&backend_viewmatrix, &basematrix, &tempmatrix);
+ //Matrix4x4_ConcatRotate(&backend_viewmatrix, -angles[2], 1, 0, 0);
+ //Matrix4x4_ConcatRotate(&backend_viewmatrix, -angles[0], 0, 1, 0);
+ //Matrix4x4_ConcatRotate(&backend_viewmatrix, -angles[1], 0, 0, 1);
+ //Matrix4x4_ConcatTranslate(&backend_viewmatrix, -origin[0], -origin[1], -origin[2]);
memset(&backend_modelmatrix, 0, sizeof(backend_modelmatrix));
}
int blend;
GLboolean depthmask;
int depthtest;
+ int scissortest;
int unit;
int clientunit;
gltextureunit_t units[MAX_TEXTUREUNITS];
}
}
+void GL_Scissor (int x, int y, int width, int height)
+{
+ CHECKGLERROR
+ qglScissor(x, vid.realheight - (y + height),width,height);
+ CHECKGLERROR
+}
+
+void GL_ScissorTest(int state)
+{
+ if(gl_state.scissortest == state)
+ return;
+
+ CHECKGLERROR
+ if((gl_state.scissortest = state))
+ qglEnable(GL_SCISSOR_TEST);
+ else
+ qglDisable(GL_SCISSOR_TEST);
+ CHECKGLERROR
+}
+
void GL_TransformToScreen(const vec4_t in, vec4_t out)
{
vec4_t temp;
{
GL_ActiveTexture(i);
unit->combinergb = combinergb;
- if (gl_combine.integer)
+ if (gl_combine.integer)
{
qglTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, unit->combinergb);CHECKGLERROR
}
}
}
+void R_Mesh_Draw_ShowTris(int numverts, int numtriangles, int *elements)
+{
+ qglBegin(GL_LINES);
+ for (;numtriangles;numtriangles--, elements += 3)
+ {
+ qglArrayElement(elements[0]);qglArrayElement(elements[1]);
+ qglArrayElement(elements[1]);qglArrayElement(elements[2]);
+ qglArrayElement(elements[2]);qglArrayElement(elements[0]);
+ }
+ qglEnd();
+ CHECKGLERROR
+}
+
/*
==============================================================================
qboolean SCR_ScreenShot(char *filename, int x, int y, int width, int height, qboolean jpeg)
{
qboolean ret;
- int i, j;
qbyte *buffer;
if (!r_render.integer)
qglReadPixels (x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer);
CHECKGLERROR
- // LordHavoc: compensate for v_overbrightbits when using hardware gamma
- if (v_hwgamma.integer)
- {
- for (i = 0;i < width * height * 3;i++)
- {
- j = buffer[i] << v_overbrightbits.integer;
- buffer[i] = (qbyte) (bound(0, j, 255));
- }
- }
-
if (jpeg)
ret = JPEG_SaveImage_preflipped (filename, width, height, buffer);
else
if (gl_combine.integer && (!gl_combine_extension || r_textureunits.integer < 2))
Cvar_SetValueQuick(&gl_combine, 0);
- // lighting scale
- r_colorscale = 1.0f / (float) (1 << v_overbrightbits.integer);
-
- // lightmaps only
- r_lightmapscalebit = v_overbrightbits.integer;
- if (gl_combine.integer && r_textureunits.integer > 1)
- r_lightmapscalebit += 2;
-
R_TimeReport("setup");
R_ClearScreen();
float varray_texcoord2f[4][65536*2];
float varray_texcoord3f[4][65536*3];
float varray_normal3f[65536*3];
+int earray_element3i[65536];
//===========================================================================
// vertex array caching subsystem