04. オブジェクト - hannsi-to/LFJG-LiteFrameJavaGui GitHub Wiki

準備

オブジェクトを作る前にやらなければならないことがあります。LFJGContextの更新を行います。init関数内に

frame.updateLFJGLContext();

これらを追加してください。 Projectionは描画方法で変わります。2Dの場合ProjectionType.OrthographicProjectionを、3Dの場合ProjectionType.PerspectiveProjectionにしてください。resolutionは現在の画面サイズが代入されます。これで準備が整いました!

public class MainFrame implements LFJGFrame {
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {

    }

    @Override
    public void drawFrame() {

    }

    @Override
    public void stopFrame() {

    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

描画

描画方法を伝えます。今回は試しに四角形を描画します。 グローバル変数でGLRect型を作成します。init関数内で

glRect1 = new GLRect("Rect1");

を追加します。引数はオブジェクトの名前になります。次に

glRect1.rect(0,0,500,500, Color.of(255,0,255,255));

を追加します。これは引数に座標、色を渡します。rect以外にもrectWHやrectOutLine、rectWHOutLineなどがあります。 描画を行います。drawFrame関数内に

glRect1.draw();

を追加してください。これで描画されます。 最後にstopFrame関数内でクリーニアップ処理を行いましょう。

glRect1.cleanup();

これで一通りの操作は終わりです。 実際のコードと実行結果が以下になります。

public class MainFrame implements LFJGFrame {
    GLRect glRect1;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glRect1 = new GLRect("Rect1");
        glRect1.rect(0, 0, 500, 500, Color.of(255, 0, 255, 255));
    }

    @Override
    public void drawFrame() {
        glRect1.draw();
    }

    @Override
    public void stopFrame() {
        glRect1.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

以降にすべての描画できるオブジェクトを紹介します。

GLPoint

public class MainFrame implements LFJGFrame {
    GLPoint glPoint;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glPoint = new GLPoint("Point1");
        glPoint.point(100, 100, 5f, Color.of(255, 0, 255, 255));
    }

    @Override
    public void drawFrame() {
        glPoint.draw();
    }

    @Override
    public void stopFrame() {
        glPoint.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

GLLine

public class MainFrame implements LFJGFrame {
    GLLine glLine;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glLine = new GLLine("Line1");
        glLine.line(100, 100, 700, 700, 1f, Color.of(255, 0, 255, 255));
    }

    @Override
    public void drawFrame() {
        glLine.draw();
    }

    @Override
    public void stopFrame() {
        glLine.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

GLTriangle

public class MainFrame implements LFJGFrame {
    GLTriangle glTriangle;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glTriangle = new GLTriangle("Triangle1");
        glTriangle.triangle(100, 100, 700, 100, 400, 700, Color.of(255, 0, 255, 255));
    }

    @Override
    public void drawFrame() {
        glTriangle.draw();
    }

    @Override
    public void stopFrame() {
        glTriangle.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

GLRoundedRect

public class MainFrame implements LFJGFrame {
    GLRoundedRect glRoundedRect;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glRoundedRect = new GLRoundedRect("RoundedRect1");
        glRoundedRect.roundedRect(100, 100, 700, 700, 30f, Color.of(255, 0, 255, 255));
    }

    @Override
    public void drawFrame() {
        glRoundedRect.draw();
    }

    @Override
    public void stopFrame() {
        glRoundedRect.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

GLCircle

public class MainFrame implements LFJGFrame {
    GLCircle glCircle;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glCircle = new GLCircle("Circle1");
        glCircle.circle(400, 400, 200, 360, Color.of(255, 0, 255, 255));
    }

    @Override
    public void drawFrame() {
        glCircle.draw();
    }

    @Override
    public void stopFrame() {
        glCircle.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

GLPolygon

public class MainFrame implements LFJGFrame {
    GLPolygon glPolygon;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        glPolygon = new GLPolygon("Polygon1");
        glPolygon.put().vertex(new Vector2f(450, 200)).color(Color.of(255, 0, 255, 255)).end();
        glPolygon.put().vertex(new Vector2f(700, 300)).color(Color.of(255, 0, 255, 255)).end();
        glPolygon.put().vertex(new Vector2f(700, 600)).color(Color.of(255, 0, 255, 255)).end();
        glPolygon.put().vertex(new Vector2f(450, 700)).color(Color.of(255, 0, 255, 255)).end();
        glPolygon.put().vertex(new Vector2f(200, 600)).color(Color.of(255, 0, 255, 255)).end();
        glPolygon.put().vertex(new Vector2f(200, 300)).color(Color.of(255, 0, 255, 255)).end();

        glPolygon.setDrawType(DrawType.POLYGON);
        glPolygon.rendering();
    }

    @Override
    public void drawFrame() {
        glPolygon.draw();
    }

    @Override
    public void stopFrame() {
        glPolygon.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}

GLText

public class MainFrame implements LFJGFrame {
    GLText glText;
    private Frame frame;

    public static void main(String[] args) {
        new MainFrame().setFrame();
    }

    @Override
    public void init() {
        frame.updateLFJGLContext();

        LFJGContext.fontCache = FontCache.initFontCache()
                .createCache(new Font("Font1", new ResourcesLocation("font/default.ttf")))
                .loadFonts();
        glText = new GLText("Text1");
        glText.text("Font1", "Hello World!!", 450, 450, 64f, Color.of(255, 0, 255, 255), AlignType.LEFT_BOTTOM);
    }

    @Override
    public void drawFrame() {
        glText.draw();
    }

    @Override
    public void stopFrame() {
        glText.cleanup();
    }

    @Override
    public void setFrameSetting() {

    }

    public void setFrame() {
        frame = new Frame(this, "MainFrame");
    }
}