--- a/hedgewars/uWorld.pas Mon Mar 23 02:03:45 2015 +0100
+++ b/hedgewars/uWorld.pas Tue Mar 24 12:48:55 2015 +0100
@@ -857,119 +857,28 @@
else
ZoomValue:= zoom;
- // Sky
- glClear(GL_COLOR_BUFFER_BIT);
- //glPushMatrix;
- //glScalef(1.0, 1.0, 1.0);
-
if (not isPaused) and (not isAFK) and (GameType <> gmtRecord) then
MoveCamera;
if cStereoMode = smNone then
begin
- glClear(GL_COLOR_BUFFER_BIT);
+ RenderClear();
DrawWorldStereo(Lag, rmDefault)
end
{$IFDEF USE_S3D_RENDERING}
- else if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) then
+ else
begin
- // create left fb
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel);
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
+ // draw frame for left eye
+ RenderClear(rmLeftEye);
DrawWorldStereo(Lag, rmLeftEye);
- // create right fb
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer);
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
+ // draw frame for right eye
+ RenderClear(rmRightEye);
DrawWorldStereo(0, rmRightEye);
-
- // detatch drawing from fbs
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, defaultFrame);
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- SetScale(cDefaultZoomLevel);
-
- // draw left frame
- glBindTexture(GL_TEXTURE_2D, texl);
- glBegin(GL_QUADS);
- if cStereoMode = smHorizontal then
- begin
- glTexCoord2f(0.0, 0.0);
- glVertex2d(cScreenWidth / -2, cScreenHeight);
- glTexCoord2f(1.0, 0.0);
- glVertex2d(0, cScreenHeight);
- glTexCoord2f(1.0, 1.0);
- glVertex2d(0, 0);
- glTexCoord2f(0.0, 1.0);
- glVertex2d(cScreenWidth / -2, 0);
- end
- else
- begin
- glTexCoord2f(0.0, 0.0);
- glVertex2d(cScreenWidth / -2, cScreenHeight / 2);
- glTexCoord2f(1.0, 0.0);
- glVertex2d(cScreenWidth / 2, cScreenHeight / 2);
- glTexCoord2f(1.0, 1.0);
- glVertex2d(cScreenWidth / 2, 0);
- glTexCoord2f(0.0, 1.0);
- glVertex2d(cScreenWidth / -2, 0);
- end;
- glEnd();
+ end;
+{$ENDIF}
- // draw right frame
- glBindTexture(GL_TEXTURE_2D, texr);
- glBegin(GL_QUADS);
- if cStereoMode = smHorizontal then
- begin
- glTexCoord2f(0.0, 0.0);
- glVertex2d(0, cScreenHeight);
- glTexCoord2f(1.0, 0.0);
- glVertex2d(cScreenWidth / 2, cScreenHeight);
- glTexCoord2f(1.0, 1.0);
- glVertex2d(cScreenWidth / 2, 0);
- glTexCoord2f(0.0, 1.0);
- glVertex2d(0, 0);
- end
- else
- begin
- glTexCoord2f(0.0, 0.0);
- glVertex2d(cScreenWidth / -2, cScreenHeight);
- glTexCoord2f(1.0, 0.0);
- glVertex2d(cScreenWidth / 2, cScreenHeight);
- glTexCoord2f(1.0, 1.0);
- glVertex2d(cScreenWidth / 2, cScreenHeight / 2);
- glTexCoord2f(0.0, 1.0);
- glVertex2d(cScreenWidth / -2, cScreenHeight / 2);
- end;
- glEnd();
- SetScale(zoom);
- end
- else
- begin
- // clear scene
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- // draw left eye in red channel only
- if cStereoMode = smGreenRed then
- glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE)
- else if cStereoMode = smBlueRed then
- glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE)
- else if cStereoMode = smCyanRed then
- glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE)
- else
- glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
- DrawWorldStereo(Lag, rmLeftEye);
- // draw right eye in selected channel(s) only
- if cStereoMode = smRedGreen then
- glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE)
- else if cStereoMode = smRedBlue then
- glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE)
- else if cStereoMode = smRedCyan then
- glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE)
- else
- glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
- DrawWorldStereo(Lag, rmRightEye);
- end
-{$ENDIF}
+FinishRender();
end;
procedure ChangeDepth(rm: TRenderMode; d: GLfloat);