summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rend2/tr_backend.c21
-rw-r--r--src/rend2/tr_init.c12
2 files changed, 31 insertions, 2 deletions
diff --git a/src/rend2/tr_backend.c b/src/rend2/tr_backend.c
index 0834176b..fd61ee76 100644
--- a/src/rend2/tr_backend.c
+++ b/src/rend2/tr_backend.c
@@ -1410,6 +1410,10 @@ const void *RB_DrawBuffer( const void *data ) {
cmd = (const drawBufferCommand_t *)data;
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
if (glRefConfig.framebufferObject)
FBO_Bind(NULL);
@@ -1493,6 +1497,10 @@ const void *RB_ColorMask(const void *data)
{
const colorMaskCommand_t *cmd = data;
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
if (glRefConfig.framebufferObject)
{
// reverse color mask, so 0 0 0 0 is the default
@@ -1517,6 +1525,7 @@ const void *RB_ClearDepth(const void *data)
{
const clearDepthCommand_t *cmd = data;
+ // finish any 2D drawing if needed
if(tess.numIndexes)
RB_EndSurface();
@@ -1648,6 +1657,10 @@ const void *RB_CapShadowMap(const void *data)
{
const capShadowmapCommand_t *cmd = data;
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
if (cmd->map != -1)
{
GL_SelectTexture(0);
@@ -1680,6 +1693,10 @@ const void *RB_PostProcess(const void *data)
FBO_t *srcFbo;
qboolean autoExposure;
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
if (!glRefConfig.framebufferObject || !r_postProcess->integer)
{
// do nothing
@@ -1812,6 +1829,10 @@ void RB_ExecuteRenderCommands( const void *data ) {
break;
case RC_END_OF_LIST:
default:
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
// stop rendering
t2 = ri.Milliseconds ();
backEnd.pc.msec = t2 - t1;
diff --git a/src/rend2/tr_init.c b/src/rend2/tr_init.c
index 99f4ecaf..7228d01b 100644
--- a/src/rend2/tr_init.c
+++ b/src/rend2/tr_init.c
@@ -467,7 +467,11 @@ const void *RB_TakeScreenshotCmd( const void *data ) {
const screenshotCommand_t *cmd;
cmd = (const screenshotCommand_t *)data;
-
+
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
if (cmd->jpeg)
RB_TakeScreenshotJPEG( cmd->x, cmd->y, cmd->width, cmd->height, cmd->fileName);
else
@@ -749,7 +753,11 @@ const void *RB_TakeVideoFrameCmd( const void *data )
size_t memcount, linelen;
int padwidth, avipadwidth, padlen, avipadlen;
GLint packAlign;
-
+
+ // finish any 2D drawing if needed
+ if(tess.numIndexes)
+ RB_EndSurface();
+
cmd = (const videoFrameCommand_t *)data;
qglGetIntegerv(GL_PACK_ALIGNMENT, &packAlign);