メインループまわり完成

ウインドウイベント類やメインループ周りを実装した。まだ、描画周りは入れていないが、GLを取得できるようにしておいたので全部自前で描画することは一応できる。

「SGMainLoop」というインターフェースを実装するだけ。以下無名クラスでのサンプル。

SGMainLoop mainLoop = new SGMainLoop() {
    float c = 255;

    @Override
    public boolean mainLoop(SGGraphic graphic) {

        GL gl = graphic.getGL();

        gl.glClearColor(c/255.0f, 0, 0, 0);
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);

        c =   c * 0.98f;
        return true;
    }

    @Override
    public void init(SGGraphic graphic) {
        //初期化
    }

    @Override
    public void dispose(SGGraphic graphic) {
        //後始末
    }
};
SGWindow.setMainLoop(mainLoop);
SGWindow.open();

これで640*480のウインドウが画面中央に表示され、30fpsでメインループが呼ばれる。最初真っ赤な色で描画され、徐々に黒くなっていく。

mainLoopの戻り値でfalseをいれると終了することが可能だ。このサンプルの場合は常にtrueでソフトによる終了処理をしていない。ウインドウを閉じるアイコンをクリックすることが必要。

ほぼ使い勝手はShinGL3と同様で簡単に扱えるのがわかると思う。OpenGLわかってる人ならこれだけでたぶんもう作れる。


このまま画面描画関係に突っ走る…のはやめてキーボードの押下状態まわりの処理にうつる。描画関係はもう大丈夫なのはわかったわけだし、あとはただのファサードだ。