DEADSOFTWARE

cleanup: remove unneeded graphics dependencies
[d2df-sdl.git] / src / engine / e_graphics.pas
index af999b19d4d3efb3373fd9ee9042b8395cd287fc..0f691aef424fdc5c39fd69ff915840ff593487cc 100644 (file)
@@ -64,6 +64,7 @@ procedure e_SetViewPort(X, Y, Width, Height: Word);
 procedure e_ResizeWindow(Width, Height: Integer);
 function e_ResizeFramebuffer(Width, Height: Integer): Boolean;
 procedure e_BlitFramebuffer(WinWidth, WinHeight: Integer);
+procedure e_SetRenderTarget(Framebuffer: Boolean);
 
 procedure e_Draw(ID: DWORD; X, Y: Integer; Alpha: Byte; AlphaChannel: Boolean;
                  Blending: Boolean; Mirror: TMirrorType = TMirrorType.None);
@@ -131,6 +132,7 @@ procedure e_TextureFontPrintCharEx (X, Y: Integer; Ch: Char; FontID: DWORD; Shad
 procedure e_ReleaseEngine();
 procedure e_BeginRender();
 procedure e_Clear(Mask: TGLbitfield; Red, Green, Blue: Single); overload;
+procedure e_Clear(Red, Green, Blue: Single); overload;
 procedure e_Clear(); overload;
 procedure e_EndRender();
 
@@ -490,15 +492,22 @@ begin
   glTexCoord2f(u, v); glVertex2i(x1, y0);
 end;
 
+procedure e_SetRenderTarget(Framebuffer: Boolean);
+begin
+  if (e_FBO = 0) or e_NoGraphics then exit;
+  if Framebuffer then
+    glBindFramebuffer(GL_FRAMEBUFFER, e_FBO)
+  else
+    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+end;
+
 procedure e_BlitFramebuffer(WinWidth, WinHeight: Integer);
 begin
   if (e_FBO = 0) or (e_Frame = 0) or e_NoGraphics then exit;
 
   glDisable(GL_BLEND);
   glEnable(GL_TEXTURE_2D);
-  glBindFramebuffer(GL_FRAMEBUFFER, 0);
   glBindTexture(GL_TEXTURE_2D, e_Frame);
-  e_SetViewPort(0, 0, WinWidth, WinHeight);
   glColor4ub(255, 255, 255, 255);
 
   glBegin(GL_QUADS);
@@ -507,9 +516,6 @@ begin
     glTexCoord2f(1, 0); glVertex2i(WinWidth, WinHeight);
     glTexCoord2f(1, 1); glVertex2i(WinWidth,         0);
   glEnd();
-
-  glBindFramebuffer(GL_FRAMEBUFFER, e_FBO);
-  e_SetViewPort(0, 0, e_FrameW, e_FrameH);
 end;
 
 procedure e_Draw(ID: DWORD; X, Y: Integer; Alpha: Byte; AlphaChannel: Boolean;
@@ -1164,6 +1170,13 @@ begin
   glClear(Mask);
 end;
 
+procedure e_Clear(Red, Green, Blue: Single); overload;
+begin
+  if e_NoGraphics then Exit;
+  glClearColor(Red, Green, Blue, 0);
+  glClear(GL_COLOR_BUFFER_BIT);
+end;
+
 procedure e_Clear(); overload;
 begin
   if e_NoGraphics then Exit;