Angeregt durch das JPCT-Tutorial habe ich mir das Ganze runter geladen und einen erste Schritt versucht. Aber obwohl die Beispiele bei mir problemlos laufen, ist es mit meinem eigenen Versuch leider nicht weit her.
Ich habe das Beispiel von der JPCT-Seite etwas angepaßt, um den getGraphics()-Aufruf zu vermeiden. Das Problem ist, daß in meinem Fenster nix zu sehen ist und das Ganze flackert wie die S...
Evtl. hat jemand von Euch Zeit, mal kurz auf meinen Code zu schauen. Ich hoffe es ist nur ein Kleinigkeit, die fehlt. Ich wollte nur als ersten Versuch eine Box mal in eine ansonsten leere Welt stellen. Hier ist der Code:
Ich habe das Beispiel von der JPCT-Seite etwas angepaßt, um den getGraphics()-Aufruf zu vermeiden. Das Problem ist, daß in meinem Fenster nix zu sehen ist und das Ganze flackert wie die S...
Evtl. hat jemand von Euch Zeit, mal kurz auf meinen Code zu schauen. Ich hoffe es ist nur ein Kleinigkeit, die fehlt. Ich wollte nur als ersten Versuch eine Box mal in eine ansonsten leere Welt stellen. Hier ist der Code:
Code:
import com.threed.jpct.*;
import java.io.*;
import java.net.URL;
import java.awt.*;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
public class Test1 extends Frame{
private static final long serialVersionUID = 1L;
private World world;
private Camera camera;
private FrameBuffer buffer;
boolean running = true;
Object3D box;
TextureManager texman;
public static void main(String[] args){
new Test1();
}
public Test1(){
Config.maxPolysVisible = 10000;
world = new World();
Config.fadeoutLight=false;
world.getLights().setOverbrightLighting(Lights.OVERBRIGHT_LIGHTING_DISABLED);
world.getLights().setRGBScale(Lights.RGB_SCALE_2X);
world.setAmbientLight(25,30,30);
world.addLight(new SimpleVector(0, -150, 0), 25, 22, 19);
world.addLight(new SimpleVector(-1000, -150, 1000), 22, 5, 4);
world.addLight(new SimpleVector(1000, -150, -1000), 4, 2, 22);
world.setFogging(World.FOGGING_ENABLED);
world.setFogParameters(1200f,0f,0f,0f);
Config.farPlane = 1200;
Config.tuneForOutdoor();
texman = TextureManager.getInstance();
Texture spot=new Texture(getClass().getClassLoader().getResourceAsStream("textures/spot.jpg"),false);
TextureManager.getInstance().addTexture("car", spot);
box = Primitives.getBox(8f,0.25f);
box.translate(5f, 5f, 5f);
box.setTexture("car");
box.build();
world.addObject(box);
camera= world.getCamera();
camera.setPosition(0,-2500,-1500);
camera.lookAt(box.getTransformedCenter());
setTitle("jPCT "+Config.getVersion());
pack();
setSize(800,600);
setResizable(false);
setVisible(true);
loop();
}
private void loop(){
World.setDefaultThread(Thread.currentThread());
buffer = new FrameBuffer(800,600,FrameBuffer.SAMPLINGMODE_NORMAL);
buffer.enableRenderer(IRenderer.RENDERER_SOFTWARE);
buffer.setBoundingBoxMode(FrameBuffer.BOUNDINGBOX_NOT_USED);
buffer.optimizeBufferAccess();
while(running){
buffer.clear();
world.renderScene(buffer);
world.draw(buffer);
buffer.update();
repaint();
Thread.yield();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
System.out.println(e);
}
}
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(buffer.getOutputBuffer(), 0, 0, this);
}
}