diff --git a/src/sig/Panel.java b/src/sig/Panel.java index 3e9e9d9..da46e15 100644 --- a/src/sig/Panel.java +++ b/src/sig/Panel.java @@ -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() { + /*Collections.sort(accumulatedTris, new Comparator() { @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 (z1SigRenderer.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; } }