Canvas scaling in OpenGL, refactor GameShell and some graphics classes

This commit is contained in:
Pazaz 2022-04-21 02:53:11 -04:00
parent 3c58eb3a01
commit bded93da5f
26 changed files with 336 additions and 291 deletions

View file

@ -366,7 +366,7 @@ public final class GlRenderer {
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(0.0D, (double) canvasWidth, 0.0D, (double) canvasHeight, -1.0D, 1.0D);
gl.glViewport(0, 0, canvasWidth, canvasHeight);
setViewportBounds(0, 0, canvasWidth, canvasHeight);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
aBoolean266 = true;
@ -541,7 +541,7 @@ public final class GlRenderer {
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
method4175((float) local7 * aFloat34, (float) local17 * aFloat34, (float) -local35 * aFloat34, (float) -local25 * aFloat34, 50.0F, 3584.0F);
gl.glViewport(arg0, canvasHeight - arg1 - arg3, arg2, arg3);
setViewportBounds(arg0, canvasHeight - arg1 - arg3, arg2, arg3);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
@ -740,6 +740,32 @@ public final class GlRenderer {
aBoolean266 = false;
}
public static int leftMargin;
public static int topMargin;
public static int topPadding;
public static int leftPadding;
public static int viewportWidth;
public static int viewportHeight;
public static void setViewportBounds(@OriginalArg(0) int x, @OriginalArg(1) int y, @OriginalArg(2) int width, @OriginalArg(3) int height) {
leftMargin = x;
topMargin = y;
viewportWidth = width;
viewportHeight = height;
resizeViewport();
}
@OriginalMember(owner = "client!gi", name = "b", descriptor = "()V")
private static void resizeViewport() {
gl.glViewport((int) (leftMargin * GameShell.canvasScale + 0.5d), (int) (topMargin * GameShell.canvasScale + 0.5d),
(int) (viewportWidth * GameShell.canvasScale + 0.5d), (int) (viewportHeight * GameShell.canvasScale + 0.5d));
}
@OriginalMember(owner = "client!tf", name = "a", descriptor = "(IIIIII)V")
public static void method4182(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5) {
@Pc(2) int local2 = -arg0;
@ -752,7 +778,7 @@ public final class GlRenderer {
@Pc(30) float local30 = local23 * (256.0F / (float) arg4);
@Pc(37) float local37 = local23 * (256.0F / (float) arg5);
gl.glOrtho((double) ((float) local2 * local30), (double) ((float) local6 * local30), (double) ((float) -local13 * local37), (double) ((float) -local9 * local37), (double) (50 - arg3), (double) (3584 - arg3));
gl.glViewport(0, 0, canvasWidth, canvasHeight);
setViewportBounds(0, 0, canvasWidth, canvasHeight);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);