Renderer optimization (occlusion)

This commit is contained in:
Sebastian Cabrera 2019-08-29 15:56:59 -04:00
parent 0bb860fc8d
commit 8789118ca7
4 changed files with 36 additions and 3 deletions

View file

@ -35,8 +35,37 @@ public class Renderer {
}
public void drawImage(Image image, int offX, int offY) {
for (int y = 0; y < image.getH(); y++) {
for (int x = 0; x < image.getW(); x++) {
int xAdjust = 0;
int yAdjust = 0;
int widthAdjust = image.getW();
int heightAdjust = image.getH();
if (offX < -image.getW()) { return; }
if (offY < -image.getH()) { return; }
if (offX >= pW) { return; }
if (offY >= pH) { return; }
if (offX < 0) {
xAdjust -= offX;
}
if (offY < 0) {
yAdjust -= offY;
}
if (widthAdjust + offX >= pW) {
widthAdjust -= widthAdjust + offX - pW;
}
if (heightAdjust + offY >= pH) {
heightAdjust -= heightAdjust + offY - pH;
}
for (int y = yAdjust; y < heightAdjust; y++) {
for (int x = xAdjust; x < widthAdjust; x++) {
setPixel(x + offX, y + offY, image.getP()[x + y * image.getW()]);
}
}

View file

@ -1,5 +1,7 @@
package bz.bronze.pixels.game;
import java.awt.event.KeyEvent;
import bz.bronze.pixels.engine.AbstractGame;
import bz.bronze.pixels.engine.GameContainer;
import bz.bronze.pixels.engine.Renderer;
@ -16,7 +18,9 @@ public class GameManager extends AbstractGame {
@Override
public void update(float dt) {
if (gc.input.isKey(KeyEvent.VK_ESCAPE)) {
System.exit(0);
}
}
@Override