Rg[[̗p

hLg̖ڎ


Rg[[pbhɂė̂nʂ̏œ Walk.java łB Rg[[̕L[ŗ̂܂B

Rg[[̗p

ȉǂẴ\[XR[hĂ܂B


Rg[[̐ݒ@

ŏɋNƂARg[[͎g悤ɂȂĂ܂B Rg[[‚Ăƃj[́uRg[[vu|[g0vIԂƁA ڑĂRg[[o܂(́uKEYBOARD CONTROLLERv̓L[{[hɂ G~[Vł)B̒̈‚I邱ƂŁAIꂽRg[[ LɂȂAg悤ɂȂ܂B

Rg[[̐ݒ̓vOƂɕۑ̂ŁAx‚ĂĂ NƂɂ͂ɃRg[[g悤ɂȂĂ܂B ARg[[‚ȂςꍇȂǂŁuڑȂvɂȂ̂ŁA ̏ꍇ́A܂j[ݒ肵ȂƂɂȂ܂B

Rg[[gvO~O

ȉARg[[gApplicationNX̎NX̃R[hłB

    public void oniMain(OniRuntime runtime,String argv[]) {
        runtime.useController(1, ControllerDescriptor.JOYPAD_8BUTTONS);
        runtime.createWindow("", width, height);
        runtime.createGraphicsWithDefaultPixelFormat();
        runtime.addControllerListener(0, new PadController());
        runtime.addKeyListener(new KeyController());
        runtime.run();
    }

oniMain\bh̒ŁAOniRuntimeIuWFNg useController\bhĂяo܂B̃\bh̍ŏ̈ vOŎgpRg[[̐łBOni ł͕̃Rg[[vO Ƃo܂B 2‚߂̈̓Rg[[̃^CvłB oni.runtime.ctrl.ControllerDescriptor̒ `Ă̂IԂƂł܂B ł́u1‚8{^pbhgvƂɂȂ܂B

āAOniRuntimeIuWFNg addControllerListenerŃCxgXi[oni.runtime.event.ControllerListener ̎NXPadControllero^Ă܂B ŏ̈̓Rg[[IDŁA0Ԗڂ̃Rg[[ɑ΂ăXi[ݒ肵Ă ƂɂȂ܂B

IuWFNgړ̏@

Rg[[̓L[{[gƈႢAʏ̓s[g܂B ԂύXꂽƂACxg܂B ̂߈ړꍇɂ́ARg[[̏ԂێāAI ɂ̒lpf[^XVĂԂƂɂȂ܂B ̏ApplicationNX̎NXupdate\bh ĂяoƂɂĂ܂B

ȉA̔̕łB

public class Walk implements Application {
    ....
    private float speedX = 0f;
    private float speedY = 0f;
    ....
    public void update(GLGraphics g) {
        next();
        draw(g);
    }
    ....
    private void next() {
        cube.move(speedX, speedY, 0);
        camera.move(speedX, speedY, 0);
    }
    ....
    class PadController implements ControllerListener {
        public void axisInclined(ControllerEvent ev) {
            float[] axisPoint = ev.getAxisPoint();
            speedX = -axisPoint[0];
            speedY = axisPoint[1];
        }
        
        public void hatswitchChanged(ControllerEvent ev) {
        }
        
        public void buttonPressed(ControllerEvent ev) {
        }
        
        public void buttonReleased(ControllerEvent ev) {
        }
    }
}

oni.runtime.event.ControllerListenerł4‚̃\bhKv܂B ł͕L[gȂ̂ŁAaxisInclined\bhɏ LqĂ܂BXVꂽ͈œnoni.runtime.event.ControllerEvent ɓĂ܂B

L[̒lgetAxisPoint\bho܂B ߂lfloat̔złB0ԖڂxA1ԖڂyɂȂĂ܂B Rg[[ɂĂẑ܂B̏ꍇɂ2Ԗڂz̒lłB l-1.0`1.0܂łɂȂ܂Bʏ͏ƍ-1.0AEƉ1.0ɂȂ܂B

eNX`̓\t

̃vOł͒nʂƂăeNX`\tĂ܂B PNGt@C[hAeNX`ƂărfIJ[hɓo^ gĂ܂B

܂AeNX`ɎgC[W̏c̃sNZ256x512Ȃ2nɂȂĂKv܂B ȉAnʃeNX`NXLand̃R[h:

class Land extends Material {
    public Land(String fileName, double aZ) {
        image = GLImageUtil.createBufferedGLImage(fileName);
        z = aZ;
    }
    
    public void init(GLGraphics g) {
        int[] ids = new int[1];
        g.glGenTextures(1, ids);
        id = ids[0];
        g.glBindTexture(GLConstants.GL_TEXTURE_2D, id);
        image.texImage(g);
    }
    
    public void draw(GLGraphics g) {
        int width = image.getWidth();
        int height = image.getHeight();
        int mul = 4;
        int[] enables = {
            GLConstants.GL_DEPTH_TEST,
            GLConstants.GL_TEXTURE_2D,
        };
        for (int i = 0; i < enables.length; i++) {
            g.glEnable(enables[i]);
        }
        g.glBindTexture(GLConstants.GL_TEXTURE_2D, id);
        g.glTexParameterf(GLConstants.GL_TEXTURE_2D, GLConstants.GL_TEXTURE_MIN_FILTER,
                          GLConstants.GL_NEAREST);
        g.glColor4d(1, 1, 1, 1);
        g.glScaled(mul, mul, 1);
        g.glTranslated(-width/2, -height/2, z);
        g.glBegin(GLConstants.GL_QUADS);
        g.glTexCoord2f(0, 0);
        g.glVertex3d(0, 0, 0);
        g.glTexCoord2f(mul, 0);
        g.glVertex3d(width, 0, 0);
        g.glTexCoord2f(mul, mul);
        g.glVertex3d(width, height, 0);
        g.glTexCoord2f(0, mul);
        g.glVertex3d(0, height, 0);
        g.glEnd();
        for (int i = enables.length - 1; i >= 0; i--) {
            g.glDisable(enables[i]);
        }
    }
    
    private BufferedGLImage image;
    private int id = -1;
    private double z;
}

RXgN^łPNGt@Conix.gfx.image.BufferedGLImageƂ [hĂ܂BApplicationNX̃RXgN^ ŌĂяoĂ܂B

init\bhApplicationNXinitGraphics \bh̒ŌĂяoĂ܂BŃeNX`̓o^sĂ܂B

draw\bhApplicationNXupdate\bh ŌĂяoĂ܂Bł͌C[WƓ傫mulwmul ̃^CxyʂɕsɂȂ悤ɓ\tĂ܂B

glBindTextureœo^ĂeNX`ĂяoĂ܂B glTexParameterGL_TEXTURE_MIN_FILTER GL_NEARESTݒ肵Ă܂B

eNX`ʂɒƂA|S̊e_glVertexőł OɁAglTexCoordŃeNX`̑Ή_ݒ肵܂B eNX`̍WngA1Ԃ̕Aꂼ1.0A1.0ɂȂ܂B ‚܂A4_ꂼ2.0ƁA̕ʂɂ2x2̃eNX`\邱Ƃ Ȃ܂B̃vOłmul=4Ȃ̂4x4ׂꂽeNX` ʂɓ\t܂B

łGL_LIGHTINGLɂĂȂ̂ glColorŐF‚Ă܂BGL_LIGHTING LɂĂꍇ́AO͂̂悤glMaterialœK؂ ގݒ肷Kv܂B




Copyright © 2001-2002 CyberStep, Inc. All Rights Reserved.

Oni \tgEFA