jpctことはじめ

jpctをはじめてみた。
ダウンロードしたアーカイブの中にあるHelloWorldをmain文だけに改造して動作を確認してみた。
若干Irrlicht風味のAPIで、シーンを作って自前ループを回すというシンプルな構成だった。
もう少し掘り進む。

import com.threed.jpct.*;

public class App {
    static public void main(String args[]){

        // create window
        FrameBuffer buffer = 
            new FrameBuffer(800, 600, FrameBuffer.SAMPLINGMODE_NORMAL);
        buffer.disableRenderer(IRenderer.RENDERER_SOFTWARE);
        buffer.enableRenderer(IRenderer.RENDERER_OPENGL);

        // setup scene
        World world = new World();
        world.setAmbientLight(0, 255, 0);

        // box
        Object3D box = Primitives.getBox(13f, 2f);
        box.setEnvmapped(Object3D.ENVMAP_ENABLED);
        box.build();
        world.addObject(box);

        // texture
        TextureManager.getInstance().addTexture("box", new Texture("box.jpg"));
        box.setTexture("box");

        // camera
        world.getCamera().setPosition(50, -50, -5);
        world.getCamera().lookAt(box.getTransformedCenter());

        // main loop
        while (!org.lwjgl.opengl.Display.isCloseRequested()) {
            // update
            box.rotateY(0.01f);

            // draw
            buffer.clear(java.awt.Color.BLUE);
            world.renderScene(buffer);
            world.draw(buffer);

            buffer.update();
            buffer.displayGLOnly();

            // wait
            try {
                Thread.sleep(10);
            }
            catch(java.lang.InterruptedException e){
                System.out.println(e.getMessage());
                break;
            }
        }
        buffer.disableRenderer(IRenderer.RENDERER_OPENGL);
        buffer.dispose();
        System.exit(0);
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<project name="JavaWithScala" default="compile">

    <property name="src" value="src" />
    <property name="classes" value="classes" />
    <property name="jpct.lib" value="T:/java/jpct/lib/jpct/jpct.jar" />
    <property name="lwjgl.lib" value="T:/java/jpct/lib/lwjgl-2.4.2/jar/lwjgl.jar;T:/java/jpct/lib/lwjgl-2.4.2/jar/lwjgl_util.jar" />
    <property name="lwjgl.dll" value="T:/java/jpct/lib/lwjgl-2.4.2/native/windows" />

    <target name="compile" depends="init">
        <mkdir dir="${classes}"/>
        <javac srcdir="${src}" 
            includeAntRuntime="no"
            destdir="${classes}">
            <classpath>
                <pathelement path="${jpct.lib}" />
                <pathelement path="${lwjgl.lib}" />
            </classpath>
        </javac>
    </target>

    <target name="run" depends="compile">
        <java classname="App"
            fork="true"
            classpath="${classes}" >
            <sysproperty key="java.library.path" value="${lwjgl.dll}"/>
            <classpath>
                <pathelement path="${jpct.lib}" />
                <pathelement path="${lwjgl.lib}" />
            </classpath>
        </java>
    </target>

    <target name="clean">