summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 315aac2)
raw | patch | inline | side by side (parent: 315aac2)
author | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Mon, 13 Feb 2023 00:08:16 +0000 (03:08 +0300) | ||
committer | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Fri, 9 Jun 2023 09:10:26 +0000 (12:10 +0300) |
src/game/renders/opengl/r_draw.pas | patch | blob | history | |
src/game/renders/opengl/r_loadscreen.pas | patch | blob | history | |
src/game/renders/opengl/r_render.pas | patch | blob | history |
index c839936087a0754aa00405d235b32c67087422a3..8442a2a4dbaa99ff01842c3ca08ceea4fe8e832e 100644 (file)
procedure r_Draw_Text (const text: AnsiString; x, y: Integer; r, g, b, a: Byte; f: TGLFont);
procedure r_Draw_GetTextSize (const text: AnsiString; f: TGLFont; out w, h: Integer);
- procedure r_Draw_Setup (w, h: Integer);
+ procedure r_Draw_Setup (sw, sh, gw, gh: Integer);
procedure r_Draw_SetRect (l, t, r, b: Integer);
procedure r_Draw_GetRect (out l, t, r, b: Integer);
var
sl, st, sr, sb: Integer;
ScreenWidth, ScreenHeight: Integer;
+ GameWidth, GameHeight: Integer;
enableTexture2D: Boolean;
curR, curG, curB, curA: Byte;
end;
end;
- procedure r_Draw_Setup (w, h: Integer);
+ procedure r_Draw_Setup (sw, sh, gw, gh: Integer);
begin
- ASSERT(w >= 0);
- ASSERT(h >= 0);
- ScreenWidth := w;
- ScreenHeight := h;
- glScissor(0, 0, w, h);
- glViewport(0, 0, w, h);
+ ASSERT((sw >= 0) and (sh >= 0)); // screen/window size
+ ASSERT((gw >= 0) and (gh >= 0)); // virtual screen size
+ ScreenWidth := sw;
+ ScreenHeight := sh;
+ GameWidth := gw;
+ GameHeight := gh;
+ glScissor(0, 0, sw, sh);
+ glViewport(0, 0, sw, sh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
- glOrtho(0, w, h, 0, 0, 1);
+ glOrtho(0, gw, gh, 0, 0, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glEnable(GL_SCISSOR_TEST);
- r_Draw_SetRect(0, 0, w - 1, h - 1);
+ r_Draw_SetRect(0, 0, gw - 1, gh - 1);
end;
procedure DrawQuad (x, y, w, h: Integer);
end;
procedure r_Draw_SetRect (l, t, r, b: Integer);
- var w, h: Integer;
+ var x, y, w, h: Integer;
begin
ASSERT(l <= r);
ASSERT(t <= b);
- w := r - l + 1;
- h := b - t + 1;
- glScissor(l, ScreenHeight - h - t, w, h);
+ x := l * ScreenWidth div GameWidth;
+ y := t * ScreenHeight div GameHeight;
+ w := (r - l + 1) * ScreenWidth div GameWidth;
+ h := (b - t + 1) * ScreenHeight div GameHeight;
+ glScissor(x, ScreenHeight - h - y, w, h);
sl := l; st := t; sr := r; sb := b;
end;
index 31d29346a9aca33ae316560d0a53713709e7d72e..2786eb3318a01ce8c807dd34e4e074925c927c92 100644 (file)
xx := gScreenWidth div 3;
yy := gScreenHeight div 3;
hh := gScreenHeight - yy - 96;
- r_Draw_Setup(gScreenWidth, gScreenHeight);
+ r_Draw_Setup(gWinSizeX, gWinSizeY, gScreenWidth, gScreenHeight);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
r_Common_DrawBackground(GameWad + ':TEXTURES/INTER');
index 5a15b28869ec57ca5f3e30b1e18ed8fa19cb4e97..369fa882a0aa8f1fe661833e9d1cfdf21c0f5c34 100644 (file)
FPSTime := time;
end;
- r_Draw_Setup(gScreenWidth, gScreenHeight);
+ r_Draw_Setup(gWinSizeX, gWinSizeY, gScreenWidth, gScreenHeight);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
gWinSizeY := h;
gRC_Width := w;
gRC_Height := h;
- gScreenWidth := w;
- gScreenHeight := h;
+ gScreenWidth := Round(w / r_pixel_scale);
+ gScreenHeight := Round(h / r_pixel_scale);
end;
procedure r_Render_Apply;