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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user