1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

fix for opengl borderless mode

This commit is contained in:
FunkyFr3sh 2023-07-07 01:24:16 +02:00
parent 566492577c
commit 045ed051ea
3 changed files with 17 additions and 7 deletions

View File

@ -82,6 +82,7 @@ typedef struct CNCDDRAW
int width; int width;
int height; int height;
int bpp; int bpp;
int opengl_y_align;
HDC hdc; HDC hdc;
int* tex; int* tex;

View File

@ -704,6 +704,11 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
if (nonexclusive || (g_ddraw->nonexclusive && !g_ddraw->windowed && g_ddraw->renderer == ogl_render_main)) if (nonexclusive || (g_ddraw->nonexclusive && !g_ddraw->windowed && g_ddraw->renderer == ogl_render_main))
{ {
g_ddraw->render.height++; g_ddraw->render.height++;
g_ddraw->render.opengl_y_align = 1;
}
else
{
g_ddraw->render.opengl_y_align = 0;
} }
if (g_ddraw->windowed) if (g_ddraw->windowed)

View File

@ -183,13 +183,13 @@ static void ogl_build_programs()
if (!g_ogl.scale_program && if (!g_ogl.scale_program &&
(g_ddraw->render.viewport.width != g_ddraw->width || (g_ddraw->render.viewport.width != g_ddraw->width ||
g_ddraw->render.viewport.height != g_ddraw->height)) g_ddraw->render.viewport.height != g_ddraw->height))
{ {
g_ogl.scale_program = oglu_build_program(PASSTHROUGH_VERT_SHADER, CATMULL_ROM_FRAG_SHADER); g_ogl.scale_program = oglu_build_program(PASSTHROUGH_VERT_SHADER, CATMULL_ROM_FRAG_SHADER);
if (!g_ogl.scale_program) if (!g_ogl.scale_program)
{ {
g_ogl.scale_program = g_ogl.scale_program =
oglu_build_program(PASSTHROUGH_VERT_SHADER_CORE, CATMULL_ROM_FRAG_SHADER_CORE); oglu_build_program(PASSTHROUGH_VERT_SHADER_CORE, CATMULL_ROM_FRAG_SHADER_CORE);
} }
@ -616,8 +616,10 @@ static void ogl_render()
BOOL needs_update = FALSE; BOOL needs_update = FALSE;
glViewport( glViewport(
g_ddraw->render.viewport.x, g_ddraw->render.viewport.y, g_ddraw->render.viewport.x,
g_ddraw->render.viewport.width, g_ddraw->render.viewport.height); g_ddraw->render.viewport.y + g_ddraw->render.opengl_y_align,
g_ddraw->render.viewport.width,
g_ddraw->render.viewport.height);
if (g_ogl.main_program) if (g_ogl.main_program)
{ {
@ -753,8 +755,10 @@ static void ogl_render()
else if (needs_update) else if (needs_update)
{ {
glViewport( glViewport(
g_ddraw->render.viewport.x, g_ddraw->render.viewport.y, g_ddraw->render.viewport.x,
g_ddraw->render.viewport.width, g_ddraw->render.viewport.height); g_ddraw->render.viewport.y + g_ddraw->render.opengl_y_align,
g_ddraw->render.viewport.width,
g_ddraw->render.viewport.height);
needs_update = FALSE; needs_update = FALSE;
} }
@ -845,7 +849,7 @@ static void ogl_render()
{ {
glViewport( glViewport(
g_ddraw->render.viewport.x, g_ddraw->render.viewport.x,
g_ddraw->render.viewport.y, g_ddraw->render.viewport.y + g_ddraw->render.opengl_y_align,
g_ddraw->render.viewport.width, g_ddraw->render.viewport.width,
g_ddraw->render.viewport.height); g_ddraw->render.viewport.height);
} }