// (C) 2001 SyGem Software import java.awt.*; import java.applet.*; import com.sygem.jazz3d3.*; import com.sygem.jazz3d3.primitive.Cube3d; public class renderModes extends Applet implements Runnable { Thread m_ce; World myWorld; int light1; int pid1; int pid2; int pid3; int pid4; int pid5; int pid6; int downx = 0; int downy = 0; double ddx = 0; double ddy = 0; boolean down = false; boolean antialias = false; boolean bilinear = false; //Construct the applet public renderModes() { } //Initialize the applet public void init() { myWorld = new World(this); setLayout(new BorderLayout()); add("Center",myWorld); } //Start the applet public void start() { if (m_ce == null) { m_ce = new Thread(this); m_ce.start(); } } //Stop the applet public void stop() { if (m_ce != null) { m_ce.stop(); m_ce = null; } } //Destroy the applet public void destroy() { } public void run() { int iCount = 0; long lTime0 = System.currentTimeMillis(); double z; ddx = 0.16; ddy = 0.35; z = 0.21; myWorld.prep(); myWorld.prepareCanvas(); myWorld.drawImage(); Graphics g = myWorld.getCanvas(); g.setColor(new Color(255,0,0)); g.drawString("Initializing demo...",20,80); myWorld.finishCanvas(); Texture t1 = TextureLoader.loadImage("images/Jazz3D_logo_large.gif"); Cube3d sp1 = new Cube3d(-0.6,-0.3,8); sp1.scaleObject(0.4,0.4,0.4); sp1.setColour(255,50,50); Cube3d sp2 = new Cube3d(0,-0.3,8); sp2.scaleObject(0.4,0.4,0.4); sp2.setColour(255,50,50); Cube3d sp3 = new Cube3d(0.6,-0.3,8); sp3.scaleObject(0.4,0.4,0.4); sp3.setColour(255,50,50); Cube3d sp4 = new Cube3d(-0.6,0.3,8); sp4.scaleObject(0.4,0.4,0.4); sp4.setColour(255,50,50); Cube3d sp5 = new Cube3d(0,0.3,8); sp5.scaleObject(0.4,0.4,0.4); sp5.setColour(255,50,50); Cube3d sp6 = new Cube3d(0.6,0.3,8); sp6.scaleObject(0.4,0.4,0.4); sp6.setColour(255,50,50); RenderSolid tex1 = new RenderSolid(); tex1.setDrawingMode(Render.FLAT); sp1.setRenderer(tex1); RenderSolid tex2 = new RenderSolid(); tex2.setDrawingMode(Render.GOURAUD); sp2.setRenderer(tex2); RenderTextured tex3 = new RenderTextured(); tex3.setDrawingMode(Render.NOSHADE); tex3.setTexture(t1); sp3.setRenderer(tex3); RenderTexturedHQ tex4 = new RenderTexturedHQ(); tex4.setDrawingMode(Render.GOURAUD); tex4.setTexture(t1); tex4.setTransparency(0.3); sp4.setRenderer(tex4); RenderOutline tex5 = new RenderOutline(); tex5.setPenColour(255,50,50); sp5.setRenderer(tex5); RenderTransparent tex6 = new RenderTransparent(); tex6.setTransparency(0.7); sp6.setRenderer(tex6); pid1 = myWorld.addObject(sp1); pid2 = myWorld.addObject(sp2); pid3 = myWorld.addObject(sp3); pid4 = myWorld.addObject(sp4); pid5 = myWorld.addObject(sp5); pid6 = myWorld.addObject(sp6); myWorld.setBackground(t1); myWorld.enableTransparentObjects(); Light l1 = new Light(0,0,1); myWorld.addLight(l1); myWorld.prepNewObjects(); while (true) { myWorld.getParentObject(pid1).rotateWorld(ddy,ddx,z); myWorld.getParentObject(pid2).rotateWorld(ddy,ddx,z); myWorld.getParentObject(pid3).rotateWorld(ddy,ddx,z); myWorld.getParentObject(pid4).rotateWorld(ddy,ddx,z); myWorld.getParentObject(pid5).rotateWorld(ddy,ddx,z); myWorld.getParentObject(pid6).rotateWorld(ddy,ddx,z); myWorld.prepareCanvas(); myWorld.generateImage(); myWorld.drawImage(); myWorld.finishCanvas(); iCount++; if((iCount%50) == 0) { lTime0-= System.currentTimeMillis(); lTime0 =-lTime0; getAppletContext().showStatus((50000./lTime0)+" frames/second"); lTime0 = System.currentTimeMillis(); } } } public boolean mouseDown(Event evt, int x, int y) { downx = x; downy = y; down = true; return true; } public boolean mouseUp(Event evt, int x, int y) { down = false; return true; } public boolean mouseDrag(Event evt, int x, int y) { if (down) { double dx = x - downx; double dy = y - downy; ddx = (dx / (this.size().width))*10.0; ddy = (dy / (this.size().height))*10.0; } return true; } public boolean keyDown(Event evt,int key) { if ((char)key=='a') {antialias=!antialias; myWorld.setAntiAliasing(antialias); return true; } if ((char)key=='b') {bilinear=!bilinear; myWorld.setBilinear(bilinear); return true; } return true; } }