X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fengine%2Fe_graphics.pas;h=0f691aef424fdc5c39fd69ff915840ff593487cc;hb=f356426288dc03a804636aaa21c0d7e049e628ac;hp=af999b19d4d3efb3373fd9ee9042b8395cd287fc;hpb=0f3497482f06d52b2fe047b568790897e1ed1644;p=d2df-sdl.git diff --git a/src/engine/e_graphics.pas b/src/engine/e_graphics.pas index af999b1..0f691ae 100644 --- a/src/engine/e_graphics.pas +++ b/src/engine/e_graphics.pas @@ -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;