diff --git a/code/renderergl2/tr_draw.c b/code/renderergl2/tr_draw.c index d9d8399a..b06a7a15 100644 --- a/code/renderergl2/tr_draw.c +++ b/code/renderergl2/tr_draw.c @@ -32,16 +32,16 @@ Draw_SetColor */ void Draw_SetColor(const vec4_t rgba) { #if 1 - if (!rgba) { - rgba = r_colorWhite; - } + if (!rgba) { + rgba = r_colorWhite; + } - backEnd.color2D[0] = (byte)(rgba[0] * tr.identityLightByte); - backEnd.color2D[1] = (byte)(rgba[1] * tr.identityLightByte); - backEnd.color2D[2] = (byte)(rgba[2] * tr.identityLightByte); - backEnd.color2D[3] = (byte)(rgba[3] * 255.0); + backEnd.color2D[0] = (byte)(rgba[0] * tr.identityLightByte); + backEnd.color2D[1] = (byte)(rgba[1] * tr.identityLightByte); + backEnd.color2D[2] = (byte)(rgba[2] * tr.identityLightByte); + backEnd.color2D[3] = (byte)(rgba[3] * 255.0); #else - RE_SetColor(rgba); + RE_SetColor(rgba); #endif } @@ -52,45 +52,45 @@ Draw_StretchPic */ void Draw_StretchPic(float x, float y, float w, float h, float s1, float t1, float s2, float t2, qhandle_t hShader) { #if 1 - shader_t* shader; + shader_t* shader; R_IssuePendingRenderCommands(); if (glRefConfig.framebufferObject) FBO_Bind(tr.renderFbo); - if (hShader) { - shader = R_GetShaderByHandle(hShader); - } - else { - shader = tr.defaultShader; - } + if (hShader) { + shader = R_GetShaderByHandle(hShader); + } + else { + shader = tr.defaultShader; + } - if (w <= 0) { - w = shader->stages[0]->bundle[0].image[0]->width; - h = shader->stages[0]->bundle[0].image[0]->height; - } + if (w <= 0) { + w = shader->stages[0]->bundle[0].image[0]->width; + h = shader->stages[0]->bundle[0].image[0]->height; + } - // draw the pic - RB_BeginSurface(shader, 0, 0); + // draw the pic + RB_BeginSurface(shader, 0, 0); RB_Color4bv(backEnd.color2D); - RB_Texcoord2f(s1, t1); - RB_Vertex2f(x, y); + RB_Texcoord2f(s1, t1); + RB_Vertex2f(x, y); - RB_Texcoord2f(s2, t1); - RB_Vertex2f(x + w, y); + RB_Texcoord2f(s2, t1); + RB_Vertex2f(x + w, y); - RB_Texcoord2f(s1, t2); - RB_Vertex2f(x, y + h); + RB_Texcoord2f(s1, t2); + RB_Vertex2f(x, y + h); - RB_Texcoord2f(s2, t2); - RB_Vertex2f(x + w, y + h); + RB_Texcoord2f(s2, t2); + RB_Vertex2f(x + w, y + h); - RB_StreamEnd(); + RB_StreamEnd(); #else - RE_StretchPic(x, y, w, h, s1, t1, s2, t2, hShader); + RE_StretchPic(x, y, w, h, s1, t1, s2, t2, hShader); #endif } @@ -100,49 +100,52 @@ Draw_StretchPic2 ================ */ void Draw_StretchPic2(float x, float y, float w, float h, float s1, float t1, float s2, float t2, float sx, float sy, qhandle_t hShader) { - shader_t* shader; - float halfWidth, halfHeight; - float scaledWidth1, scaledHeight1; - float scaledWidth2, scaledHeight2; + shader_t* shader; + float halfWidth, halfHeight; + float scaledWidth1, scaledHeight1; + float scaledWidth2, scaledHeight2; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); - if (hShader) { - shader = R_GetShaderByHandle(hShader); - } - else { - shader = tr.defaultShader; - } + if (glRefConfig.framebufferObject) + FBO_Bind(tr.renderFbo); - if (w <= 0) { - w = shader->stages[0]->bundle[0].image[0]->width; - h = shader->stages[0]->bundle[0].image[0]->height; - } + if (hShader) { + shader = R_GetShaderByHandle(hShader); + } + else { + shader = tr.defaultShader; + } - halfWidth = w * 0.5f; - halfHeight = h * 0.5f; - scaledWidth1 = halfWidth * sy; - scaledHeight1 = halfHeight * sx; - scaledWidth2 = halfWidth * sx; - scaledHeight2 = halfHeight * sy; + if (w <= 0) { + w = shader->stages[0]->bundle[0].image[0]->width; + h = shader->stages[0]->bundle[0].image[0]->height; + } + + halfWidth = w * 0.5f; + halfHeight = h * 0.5f; + scaledWidth1 = halfWidth * sy; + scaledHeight1 = halfHeight * sx; + scaledWidth2 = halfWidth * sx; + scaledHeight2 = halfHeight * sy; // draw the pic RB_Color4bv(backEnd.color2D); - RB_BeginSurface(shader, 0, 0); + RB_BeginSurface(shader, 0, 0); - RB_Texcoord2f(s1, t1); - RB_Vertex3f(x + halfWidth - (scaledWidth2 + -scaledHeight2), y + halfWidth - scaledHeight1 - scaledWidth1, 0); + RB_Texcoord2f(s1, t1); + RB_Vertex3f(x + halfWidth - (scaledWidth2 + -scaledHeight2), y + halfWidth - scaledHeight1 - scaledWidth1, 0); - RB_Texcoord2f(t2, t1); - RB_Vertex3f(scaledWidth2 - -scaledHeight2 + x + halfWidth, scaledWidth1 - scaledHeight1 + y + halfWidth, 0); + RB_Texcoord2f(t2, t1); + RB_Vertex3f(scaledWidth2 - -scaledHeight2 + x + halfWidth, scaledWidth1 - scaledHeight1 + y + halfWidth, 0); - RB_Texcoord2f(s1, s2); - RB_Vertex3f(x+ halfWidth - (scaledWidth2 + scaledHeight2), scaledHeight1 - scaledWidth1 + y + halfWidth, 0); + RB_Texcoord2f(s1, s2); + RB_Vertex3f(x+ halfWidth - (scaledWidth2 + scaledHeight2), scaledHeight1 - scaledWidth1 + y + halfWidth, 0); - RB_Texcoord2f(t2, s2); - RB_Vertex3f(scaledWidth2 - scaledHeight2 + x + halfWidth, scaledWidth1 + scaledHeight1 + y + halfWidth, 0); + RB_Texcoord2f(t2, s2); + RB_Vertex3f(scaledWidth2 - scaledHeight2 + x + halfWidth, scaledWidth1 + scaledHeight1 + y + halfWidth, 0); - RB_StreamEnd(); + RB_StreamEnd(); } @@ -152,44 +155,47 @@ Draw_TilePic ================ */ void Draw_TilePic(float x, float y, float w, float h, qhandle_t hShader) { - shader_t* shader; - float picw, pich; + shader_t* shader; + float picw, pich; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); - if (hShader) { - shader = R_GetShaderByHandle(hShader); - } - else { - shader = tr.defaultShader; - } + if (glRefConfig.framebufferObject) + FBO_Bind(tr.renderFbo); - if (w <= 0) { - w = shader->stages[0]->bundle[0].image[0]->width; - h = shader->stages[0]->bundle[0].image[0]->height; - } + if (hShader) { + shader = R_GetShaderByHandle(hShader); + } + else { + shader = tr.defaultShader; + } - picw = shader->stages[0]->bundle[0].image[0]->uploadWidth; - pich = shader->stages[0]->bundle[0].image[0]->uploadHeight; + if (w <= 0) { + w = shader->stages[0]->bundle[0].image[0]->width; + h = shader->stages[0]->bundle[0].image[0]->height; + } + + picw = shader->stages[0]->bundle[0].image[0]->uploadWidth; + pich = shader->stages[0]->bundle[0].image[0]->uploadHeight; // draw the pic RB_Color4bv(backEnd.color2D); - RB_StreamBegin(shader); + RB_StreamBegin(shader); - RB_Texcoord2f(x / picw, y / pich); - RB_Vertex2f(x, y); + RB_Texcoord2f(x / picw, y / pich); + RB_Vertex2f(x, y); - RB_Texcoord2f((x + w) / picw, y / pich); - RB_Vertex2f(x + w, y); + RB_Texcoord2f((x + w) / picw, y / pich); + RB_Vertex2f(x + w, y); - RB_Texcoord2f(x / picw, (y + h) / pich); - RB_Vertex2f(x, y + h); + RB_Texcoord2f(x / picw, (y + h) / pich); + RB_Vertex2f(x, y + h); - RB_Texcoord2f((x + w) / picw, (y + h) / pich); - RB_Vertex2f(x + w, y + h); + RB_Texcoord2f((x + w) / picw, (y + h) / pich); + RB_Vertex2f(x + w, y + h); - RB_StreamEnd(); + RB_StreamEnd(); } /* @@ -198,44 +204,47 @@ Draw_TilePicOffset ================ */ void Draw_TilePicOffset(float x, float y, float w, float h, qhandle_t hShader, int offsetX, int offsetY) { - shader_t* shader; - float picw, pich; + shader_t* shader; + float picw, pich; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); - if (hShader) { - shader = R_GetShaderByHandle(hShader); - } - else { - shader = tr.defaultShader; - } + if (glRefConfig.framebufferObject) + FBO_Bind(tr.renderFbo); - if (w <= 0) { - w = shader->stages[0]->bundle[0].image[0]->width; - h = shader->stages[0]->bundle[0].image[0]->height; - } + if (hShader) { + shader = R_GetShaderByHandle(hShader); + } + else { + shader = tr.defaultShader; + } - picw = shader->stages[0]->bundle[0].image[0]->uploadWidth; - pich = shader->stages[0]->bundle[0].image[0]->uploadHeight; + if (w <= 0) { + w = shader->stages[0]->bundle[0].image[0]->width; + h = shader->stages[0]->bundle[0].image[0]->height; + } + + picw = shader->stages[0]->bundle[0].image[0]->uploadWidth; + pich = shader->stages[0]->bundle[0].image[0]->uploadHeight; // draw the pic RB_Color4bv(backEnd.color2D); - RB_StreamBegin(shader); + RB_StreamBegin(shader); - RB_Texcoord2f(x / picw, y / pich); - RB_Vertex2f(x + offsetX, y + offsetY); + RB_Texcoord2f(x / picw, y / pich); + RB_Vertex2f(x + offsetX, y + offsetY); - RB_Texcoord2f((x + w) / picw, y / pich); - RB_Vertex2f(x + offsetX + w, y + offsetY); + RB_Texcoord2f((x + w) / picw, y / pich); + RB_Vertex2f(x + offsetX + w, y + offsetY); - RB_Texcoord2f(x / picw, (y + h) / pich); - RB_Vertex2f(x + offsetX, y + offsetY + h); + RB_Texcoord2f(x / picw, (y + h) / pich); + RB_Vertex2f(x + offsetX, y + offsetY + h); - RB_Texcoord2f((x + w) / picw, (y + h) / pich); - RB_Vertex2f(x + offsetX + w, y + offsetY + h); + RB_Texcoord2f((x + w) / picw, (y + h) / pich); + RB_Vertex2f(x + offsetX + w, y + offsetY + h); - RB_StreamEnd(); + RB_StreamEnd(); } /* @@ -244,29 +253,32 @@ Draw_TrianglePic ================ */ void Draw_TrianglePic(const vec2_t vPoints[3], const vec2_t vTexCoords[3], qhandle_t hShader) { - int i; - shader_t* shader; + int i; + shader_t* shader; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); - if (hShader) { - shader = R_GetShaderByHandle(hShader); - } - else { - shader = tr.defaultShader; - } + if (glRefConfig.framebufferObject) + FBO_Bind(tr.renderFbo); + + if (hShader) { + shader = R_GetShaderByHandle(hShader); + } + else { + shader = tr.defaultShader; + } // draw the pic RB_Color4bv(backEnd.color2D); - RB_BeginSurface(shader, 0, 0); + RB_BeginSurface(shader, 0, 0); - for (i = 0; i < 3; i++) { - RB_Texcoord2f(vTexCoords[i][0], vTexCoords[i][1]); - RB_Vertex2f(vPoints[i][0], vPoints[i][1]); - } + for (i = 0; i < 3; i++) { + RB_Texcoord2f(vTexCoords[i][0], vTexCoords[i][1]); + RB_Vertex2f(vPoints[i][0], vPoints[i][1]); + } - RB_StreamEnd(); + RB_StreamEnd(); } /* @@ -275,59 +287,59 @@ RE_DrawBackground_TexSubImage ================ */ void RE_DrawBackground_TexSubImage(int cols, int rows, int bgr, byte* data) { - // FIXME: unimplemented (GL2) + // FIXME: unimplemented (GL2) #if 0 - GLenum format; - int w, h; + GLenum format; + int w, h; - w = glConfig.vidWidth; - h = glConfig.vidHeight; + w = glConfig.vidWidth; + h = glConfig.vidHeight; - R_IssuePendingRenderCommands(); - qglFinish(); + R_IssuePendingRenderCommands(); + qglFinish(); - if (bgr) { - format = GL_BGR_EXT; - } - else { - format = GL_RGB; - } + if (bgr) { + format = GL_BGR_EXT; + } + else { + format = GL_RGB; + } - GL_Bind(tr.scratchImage); + GL_Bind(tr.scratchImage); - if (cols == tr.scratchImage->width && rows == tr.scratchImage->height && format == tr.scratchImage->internalFormat) - { - qglTexSubImage2D(3553, 0, 0, 0, cols, rows, format, 5121, data); - } - else - { - tr.scratchImage->uploadWidth = cols; - tr.scratchImage->uploadHeight = rows; - tr.scratchImage->internalFormat = format; - qglTexImage2D(GL_TEXTURE_2D, 0, 3, cols, rows, 0, format, 5121, data); - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 9729.0); - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 9729.0); - } + if (cols == tr.scratchImage->width && rows == tr.scratchImage->height && format == tr.scratchImage->internalFormat) + { + qglTexSubImage2D(3553, 0, 0, 0, cols, rows, format, 5121, data); + } + else + { + tr.scratchImage->uploadWidth = cols; + tr.scratchImage->uploadHeight = rows; + tr.scratchImage->internalFormat = format; + qglTexImage2D(GL_TEXTURE_2D, 0, 3, cols, rows, 0, format, 5121, data); + qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 9729.0); + qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 9729.0); + } - qglDisable(GL_CULL_FACE); - qglDisable(GL_DEPTH_TEST); - qglEnable(GL_TEXTURE_2D); + qglDisable(GL_CULL_FACE); + qglDisable(GL_DEPTH_TEST); + qglEnable(GL_TEXTURE_2D); - qglBegin(GL_QUADS); + qglBegin(GL_QUADS); - qglTexCoord2f(0.5 / (GLfloat)cols, ((GLfloat)rows - 0.5) / rows); - qglVertex2f(0, 0); + qglTexCoord2f(0.5 / (GLfloat)cols, ((GLfloat)rows - 0.5) / rows); + qglVertex2f(0, 0); - qglTexCoord2f(((GLfloat)cols - 0.5) / cols, ((GLfloat)rows - 0.5) / rows); - qglVertex2f(w, 0); + qglTexCoord2f(((GLfloat)cols - 0.5) / cols, ((GLfloat)rows - 0.5) / rows); + qglVertex2f(w, 0); - qglTexCoord2f(((GLfloat)cols - 0.5) / cols, 0.5 / (GLfloat)rows); - qglVertex2f(w, h); + qglTexCoord2f(((GLfloat)cols - 0.5) / cols, 0.5 / (GLfloat)rows); + qglVertex2f(w, h); - qglTexCoord2f(0.5 / (GLfloat)rows, 0.5 / (GLfloat)rows); - qglVertex2f(0, h); + qglTexCoord2f(0.5 / (GLfloat)rows, 0.5 / (GLfloat)rows); + qglVertex2f(0, h); - qglEnd(); + qglEnd(); #endif } @@ -339,22 +351,22 @@ RE_DrawBackground_DrawPixels void RE_DrawBackground_DrawPixels(int cols, int rows, int bgr, byte* data) { // FIXME: unimplemented (GL2) #if 0 - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); - GL_State(0); - qglDisable(GL_TEXTURE_2D); + GL_State(0); + qglDisable(GL_TEXTURE_2D); - qglPixelZoom(glConfig.vidWidth / rows, glConfig.vidHeight / cols); + qglPixelZoom(glConfig.vidWidth / rows, glConfig.vidHeight / cols); - if (bgr) { - qglDrawPixels(cols, rows, GL_BGR, GL_UNSIGNED_BYTE, data); - } else { - qglDrawPixels(cols, rows, GL_RGB, GL_UNSIGNED_BYTE, data); - } + if (bgr) { + qglDrawPixels(cols, rows, GL_BGR, GL_UNSIGNED_BYTE, data); + } else { + qglDrawPixels(cols, rows, GL_RGB, GL_UNSIGNED_BYTE, data); + } - qglPixelZoom(1.0, 1.0); + qglPixelZoom(1.0, 1.0); - qglEnable(GL_TEXTURE_2D); + qglEnable(GL_TEXTURE_2D); #endif } @@ -366,37 +378,37 @@ AddBox void AddBox(float x, float y, float w, float h) { vec4_t quadVerts[4]; vec2_t texCoords[4]; - vec4_t color; + vec4_t color; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); GL_BindToTMU(tr.whiteImage, TB_COLORMAP); GL_State(GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE); - if (glRefConfig.framebufferObject) - { - FBO_Bind(tr.renderFbo); - } + if (glRefConfig.framebufferObject) + { + FBO_Bind(tr.renderFbo); + } - color[0] = backEnd.color2D[0] / 255.0; - color[1] = backEnd.color2D[1] / 255.0; - color[2] = backEnd.color2D[2] / 255.0; - color[3] = backEnd.color2D[3] / 255.0; - - VectorSet4(quadVerts[0], x, y, 0.0f, 1.0f); - VectorSet4(quadVerts[1], x + w, y, 0.0f, 1.0f); - VectorSet4(quadVerts[2], x + w, y + h, 0.0f, 1.0f); - VectorSet4(quadVerts[3], x, y + h, 0.0f, 1.0f); + color[0] = backEnd.color2D[0] / 255.0; + color[1] = backEnd.color2D[1] / 255.0; + color[2] = backEnd.color2D[2] / 255.0; + color[3] = backEnd.color2D[3] / 255.0; + + VectorSet4(quadVerts[0], x, y, 0.0f, 1.0f); + VectorSet4(quadVerts[1], x + w, y, 0.0f, 1.0f); + VectorSet4(quadVerts[2], x + w, y + h, 0.0f, 1.0f); + VectorSet4(quadVerts[3], x, y + h, 0.0f, 1.0f); - VectorSet2(texCoords[0], 0.0f, 0.0f); - VectorSet2(texCoords[1], 1.0f, 0.0f); - VectorSet2(texCoords[2], 1.0f, 1.0f); - VectorSet2(texCoords[3], 0.0f, 1.0f); + VectorSet2(texCoords[0], 0.0f, 0.0f); + VectorSet2(texCoords[1], 1.0f, 0.0f); + VectorSet2(texCoords[2], 1.0f, 1.0f); + VectorSet2(texCoords[3], 0.0f, 1.0f); - GLSL_BindProgram(&tr.textureColorShader); - - GLSL_SetUniformMat4(&tr.textureColorShader, UNIFORM_MODELVIEWPROJECTIONMATRIX, glState.modelviewProjection); - GLSL_SetUniformVec4(&tr.textureColorShader, UNIFORM_COLOR, color); + GLSL_BindProgram(&tr.textureColorShader); + + GLSL_SetUniformMat4(&tr.textureColorShader, UNIFORM_MODELVIEWPROJECTIONMATRIX, glState.modelviewProjection); + GLSL_SetUniformVec4(&tr.textureColorShader, UNIFORM_COLOR, color); RB_InstantQuad2(quadVerts, texCoords); } @@ -409,37 +421,37 @@ DrawBox void DrawBox(float x, float y, float w, float h) { vec4_t quadVerts[4]; vec2_t texCoords[4]; - vec4_t color; + vec4_t color; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); GL_BindToTMU(tr.whiteImage, TB_COLORMAP); GL_State(GLS_DEPTHTEST_DISABLE | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA | GLS_SRCBLEND_SRC_ALPHA); - if (glRefConfig.framebufferObject) - { - FBO_Bind(tr.renderFbo); - } + if (glRefConfig.framebufferObject) + { + FBO_Bind(tr.renderFbo); + } - color[0] = backEnd.color2D[0] / 255.0; - color[1] = backEnd.color2D[1] / 255.0; - color[2] = backEnd.color2D[2] / 255.0; - color[3] = backEnd.color2D[3] / 255.0; - - VectorSet4(quadVerts[0], x, y, 0.0f, 1.0f); - VectorSet4(quadVerts[1], x + w, y, 0.0f, 1.0f); - VectorSet4(quadVerts[2], x + w, y + h, 0.0f, 1.0f); - VectorSet4(quadVerts[3], x, y + h, 0.0f, 1.0f); + color[0] = backEnd.color2D[0] / 255.0; + color[1] = backEnd.color2D[1] / 255.0; + color[2] = backEnd.color2D[2] / 255.0; + color[3] = backEnd.color2D[3] / 255.0; + + VectorSet4(quadVerts[0], x, y, 0.0f, 1.0f); + VectorSet4(quadVerts[1], x + w, y, 0.0f, 1.0f); + VectorSet4(quadVerts[2], x + w, y + h, 0.0f, 1.0f); + VectorSet4(quadVerts[3], x, y + h, 0.0f, 1.0f); - VectorSet2(texCoords[0], 0.0f, 0.0f); - VectorSet2(texCoords[1], 1.0f, 0.0f); - VectorSet2(texCoords[2], 1.0f, 1.0f); - VectorSet2(texCoords[3], 0.0f, 1.0f); + VectorSet2(texCoords[0], 0.0f, 0.0f); + VectorSet2(texCoords[1], 1.0f, 0.0f); + VectorSet2(texCoords[2], 1.0f, 1.0f); + VectorSet2(texCoords[3], 0.0f, 1.0f); - GLSL_BindProgram(&tr.textureColorShader); - - GLSL_SetUniformMat4(&tr.textureColorShader, UNIFORM_MODELVIEWPROJECTIONMATRIX, glState.modelviewProjection); - GLSL_SetUniformVec4(&tr.textureColorShader, UNIFORM_COLOR, color); + GLSL_BindProgram(&tr.textureColorShader); + + GLSL_SetUniformMat4(&tr.textureColorShader, UNIFORM_MODELVIEWPROJECTIONMATRIX, glState.modelviewProjection); + GLSL_SetUniformVec4(&tr.textureColorShader, UNIFORM_COLOR, color); RB_InstantQuad2(quadVerts, texCoords); } @@ -452,30 +464,30 @@ DrawLineLoop void DrawLineLoop(const vec2_t* points, int count, int stipple_factor, int stipple_mask) { // FIXME: unimplemented (GL2) #if 0 - int i; + int i; - R_IssuePendingRenderCommands(); + R_IssuePendingRenderCommands(); - qglDisable(GL_TEXTURE_2D); + qglDisable(GL_TEXTURE_2D); - if (stipple_factor) { - qglEnable(GL_LINE_STIPPLE); - qglLineStipple(stipple_factor, stipple_mask); - } + if (stipple_factor) { + qglEnable(GL_LINE_STIPPLE); + qglLineStipple(stipple_factor, stipple_mask); + } - qglBegin(GL_LINE_LOOP); + qglBegin(GL_LINE_LOOP); - for (i = 0; i < count; i++) { - qglVertex2f(points[i][0], points[i][1]); - } + for (i = 0; i < count; i++) { + qglVertex2f(points[i][0], points[i][1]); + } - qglEnd(); + qglEnd(); - qglEnable(GL_TEXTURE_2D); + qglEnable(GL_TEXTURE_2D); - if (stipple_factor) { - qglDisable(GL_LINE_STIPPLE); - } + if (stipple_factor) { + qglDisable(GL_LINE_STIPPLE); + } #endif } @@ -485,27 +497,31 @@ Set2DWindow ================ */ void Set2DWindow(int x, int y, int w, int h, float left, float right, float bottom, float top, float n, float f) { - mat4_t matrix; + mat4_t matrix; - R_IssuePendingRenderCommands(); - qglViewport(x, y, w, h); - qglScissor(x, y, w, h); + R_IssuePendingRenderCommands(); + + backEnd.projection2D = qtrue; + backEnd.last2DFBO = glState.currentFBO; + + qglViewport(x, y, w, h); + qglScissor(x, y, w, h); Mat4Ortho(left, right, bottom, top, n, f, matrix); - GL_SetProjectionMatrix(matrix); - Mat4Identity(matrix); - GL_SetModelviewMatrix(matrix); + GL_SetProjectionMatrix(matrix); + Mat4Identity(matrix); + GL_SetModelviewMatrix(matrix); - GL_State(GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA); + GL_State(GLS_DEPTHTEST_DISABLE | GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA); GL_Cull(CT_TWO_SIDED); - if (!backEnd.projection2D) - { - backEnd.refdef.time = ri.Milliseconds(); - backEnd.projection2D = qtrue; - backEnd.refdef.floatTime = backEnd.refdef.time / 1000.0; - } + if (!backEnd.projection2D) + { + backEnd.refdef.time = ri.Milliseconds(); + backEnd.projection2D = qtrue; + backEnd.refdef.floatTime = backEnd.refdef.time / 1000.0; + } } /* @@ -514,6 +530,6 @@ RE_Scissor ================ */ void RE_Scissor(int x, int y, int width, int height) { - qglEnable(GL_SCISSOR_TEST); - qglScissor(x, y, width, height); + qglEnable(GL_SCISSOR_TEST); + qglScissor(x, y, width, height); }