int gl_maxdrawrangeelementsindices;
#ifdef DEBUGGL
-int errornumber = 0;
+int gl_errornumber = 0;
void GL_PrintError(int errornumber, const char *filename, int linenumber)
{
#endif
}
+void R_Viewport_InitOrtho3D(r_viewport_t *v, const matrix4x4_t *cameramatrix, int x, int y, int width, int height, float frustumx, float frustumy, float nearclip, float farclip, const float *nearplane)
+{
+ matrix4x4_t tempmatrix, basematrix;
+ float m[16];
+ memset(v, 0, sizeof(*v));
+
+ v->type = R_VIEWPORTTYPE_PERSPECTIVE;
+ v->cameramatrix = *cameramatrix;
+ v->x = x;
+ v->y = y;
+ v->z = 0;
+ v->width = width;
+ v->height = height;
+ v->depth = 1;
+ memset(m, 0, sizeof(m));
+ m[0] = 1.0 / frustumx;
+ m[5] = 1.0 / frustumy;
+ m[10] = -2 / (farclip - nearclip);
+ m[14] = -(farclip + nearclip) / (farclip - nearclip);
+ m[15] = 1;
+ v->screentodepth[0] = -farclip / (farclip - nearclip);
+ v->screentodepth[1] = farclip * nearclip / (farclip - nearclip);
+
+ Matrix4x4_Invert_Full(&tempmatrix, &v->cameramatrix);
+ Matrix4x4_CreateRotate(&basematrix, -90, 1, 0, 0);
+ Matrix4x4_ConcatRotate(&basematrix, 90, 0, 0, 1);
+ Matrix4x4_Concat(&v->viewmatrix, &basematrix, &tempmatrix);
+
+ if (nearplane)
+ R_Viewport_ApplyNearClipPlaneFloatGL(v, m, nearplane[0], nearplane[1], nearplane[2], nearplane[3]);
+
+ if(v_flipped.integer)
+ {
+ m[0] = -m[0];
+ m[4] = -m[4];
+ m[8] = -m[8];
+ m[12] = -m[12];
+ }
+
+ Matrix4x4_FromArrayFloatGL(&v->projectmatrix, m);
+}
+
void R_Viewport_InitPerspective(r_viewport_t *v, const matrix4x4_t *cameramatrix, int x, int y, int width, int height, float frustumx, float frustumy, float nearclip, float farclip, const float *nearplane)
{
matrix4x4_t tempmatrix, basematrix;
Matrix4x4_FromArrayFloatGL(&v->projectmatrix, m);
}
-void R_Viewport_InitRectSideView(r_viewport_t *v, const matrix4x4_t *cameramatrix, int side, int size, int border, float nearclip, float farclip, const float *nearplane)
+void R_Viewport_InitRectSideView(r_viewport_t *v, const matrix4x4_t *cameramatrix, int side, int size, int border, float nearclip, float farclip, const float *nearplane, int offsetx, int offsety)
{
matrix4x4_t tempmatrix, basematrix;
float m[16];
memset(v, 0, sizeof(*v));
v->type = R_VIEWPORTTYPE_PERSPECTIVECUBESIDE;
v->cameramatrix = *cameramatrix;
- v->x = (side & 1) * size;
- v->y = (side >> 1) * size;
+ v->x = offsetx + (side & 1) * size;
+ v->y = offsety + (side >> 1) * size;
v->width = size;
v->height = size;
v->depth = 1;
int tex2d, tex3d, texcubemap, texnum;
if (unitnum >= vid.teximageunits)
return;
-// if (unit->texture == tex)
-// return;
+ if (unit->texture == tex)
+ return;
switch(vid.renderpath)
{
case RENDERPATH_GL20: