Include a depth buffer.
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
562ae07307
commit
1ce63d60a2
@ -66,6 +66,7 @@ public class Panel extends JPanel implements Runnable {
|
||||
if(thread.isInterrupted() || !thread.isAlive()){
|
||||
thread.start();
|
||||
}
|
||||
SigRenderer.depthBuffer = new float[width*height];
|
||||
}
|
||||
/**
|
||||
* Do your draws in here !!
|
||||
@ -81,10 +82,8 @@ public class Panel extends JPanel implements Runnable {
|
||||
if(p.length != width * height) return;
|
||||
for (int x=0;x<width;x++) {
|
||||
for (int y=0;y<height;y++) {
|
||||
boolean found=false;
|
||||
if (!found) {
|
||||
p[ (int)(x*SigRenderer.RESOLUTION) + (int)(y*SigRenderer.RESOLUTION) * width] = 0;
|
||||
}
|
||||
p[ (int)(x*SigRenderer.RESOLUTION) + (int)(y*SigRenderer.RESOLUTION) * width] = 0;
|
||||
SigRenderer.depthBuffer[x+y*width]=0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,14 +195,14 @@ public class Panel extends JPanel implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(accumulatedTris, new Comparator<Triangle>() {
|
||||
/*Collections.sort(accumulatedTris, new Comparator<Triangle>() {
|
||||
@Override
|
||||
public int compare(Triangle t1, Triangle t2) {
|
||||
float z1=(t1.A.z+t1.B.z+t1.C.z)/3f;
|
||||
float z2=(t2.A.z+t2.B.z+t2.C.z)/3f;
|
||||
return (z1<z2)?1:(z1==z2)?0:-1;
|
||||
}
|
||||
});
|
||||
});*/
|
||||
|
||||
for (Triangle t : accumulatedTris) {
|
||||
Triangle[] clipped = new Triangle[]{new Triangle(),new Triangle()};
|
||||
|
@ -17,7 +17,7 @@ import java.awt.BorderLayout;
|
||||
|
||||
public class SigRenderer implements KeyListener,MouseListener,MouseMotionListener{
|
||||
|
||||
public static boolean WIREFRAME = true;
|
||||
public static boolean WIREFRAME = false;
|
||||
|
||||
public static Mesh cube;
|
||||
public static int SCREEN_WIDTH=1280;
|
||||
@ -45,6 +45,8 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene
|
||||
|
||||
public static Texture dirtTex;
|
||||
|
||||
public static float[] depthBuffer;
|
||||
|
||||
boolean upHeld=false,downHeld=false,leftHeld=false,rightHeld=false,
|
||||
aHeld=false,sHeld=false,dHeld=false,wHeld=false;
|
||||
|
||||
|
@ -79,7 +79,10 @@ public class DrawUtils {
|
||||
tex_u=(1.0f-t)*tex_su+t*tex_eu;
|
||||
tex_v=(1.0f-t)*tex_sv+t*tex_ev;
|
||||
tex_w=(1.0f-t)*tex_sw+t*tex_ew;
|
||||
Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f));
|
||||
if (tex_w>SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j]) {
|
||||
Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f));
|
||||
SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j] = tex_w;
|
||||
}
|
||||
t+=tstep;
|
||||
}
|
||||
}
|
||||
@ -128,7 +131,10 @@ public class DrawUtils {
|
||||
tex_u=(1.0f-t)*tex_su+t*tex_eu;
|
||||
tex_v=(1.0f-t)*tex_sv+t*tex_ev;
|
||||
tex_w=(1.0f-t)*tex_sw+t*tex_ew;
|
||||
Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f));
|
||||
if (tex_w>SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j]) {
|
||||
Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f));
|
||||
SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j] = tex_w;
|
||||
}
|
||||
t+=tstep;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user