gpu: store and use previous viewport's offsets for each frame

Shortly after logging in there several frames without a tli, and so no scene is
rendered on them. Since we glClear the entire buffer each frame and re-render
the most recent scene draw to emulate the vanilla effect of not painting over
the viewport, the viewport offset x/y values at the time we draw the frame may
be -1 due to that frame not having the scene rendered. Store the viewport
offsets at the time of the most recent scene draw and use them for each
subsequent frame.
This commit is contained in:
Adam
2021-11-04 15:30:33 -04:00
parent 365375ee21
commit 59308db50b

View File

@@ -262,6 +262,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private int yaw;
private int pitch;
private int viewportOffsetX;
private int viewportOffsetY;
// fields for non-compute draw
private boolean drawingModel;
private int modelX, modelY, modelZ;
@@ -794,6 +797,8 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
{
yaw = client.getCameraYaw();
pitch = client.getCameraPitch();
viewportOffsetX = client.getViewportXOffset();
viewportOffsetY = client.getViewportYOffset();
final Scene scene = client.getScene();
scene.setDrawDistance(getDrawDistance());
@@ -1132,8 +1137,8 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
}
final Texture[] textures = textureProvider.getTextures();
int renderHeightOff = client.getViewportYOffset();
int renderWidthOff = client.getViewportXOffset();
int renderWidthOff = viewportOffsetX;
int renderHeightOff = viewportOffsetY;
int renderCanvasHeight = canvasHeight;
int renderViewportHeight = viewportHeight;
int renderViewportWidth = viewportWidth;