Java OpenGL javaFxでの実装

前回、joglのインストールを行いました。

それで色々と調べたところ、JOGL + JavaFXは可能であることがわかった。
ただし、ちょいとクラスの使い方がスタンダードに行かないみたいだ。

一応画面起動ができました。そのコードです。
※画面の中身は何も実装しておりません。

 

package jp.zs.jogl.main;

 

import javafx.embed.swing.SwingNode;

import javax.media.opengl.GLAutoDrawable;

import javax.media.opengl.GLCapabilities;

import javax.media.opengl.GLEventListener;

import javax.media.opengl.GLProfile;

import javax.media.opengl.awt.GLCanvas;

import javax.swing.SwingUtilities;

import javafx.scene.layout.StackPane;

import javafx.application.Application;

import javafx.scene.Scene;

import javafx.stage.Stage;

 

@SuppressWarnings("restriction")

public class Game extends Application implements GLEventListener {

 

public static void main(String[] args) {

launch("JavaFX");

}

private void setUpStage(Stage stage, GLCanvas canvas) {

}

private void createAndSetSwingContent(SwingNode node) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

 

//node.setContent(  );

}

});

}

 

@Override

public void start(Stage stage) {

try {

// System.loadLibrary("jogl");

// System.out.println("Hello JOGL");

 

// 表示するためのJavaFXクラス

final SwingNode swing = new SwingNode();

createAndSetSwingContent(swing);

 

// 表示するためのJoglクラス(部品)

final GLProfile profile = GLProfile.get(GLProfile.GL2);

GLCapabilities caps = new GLCapabilities(profile);

 

final GLCanvas glcanvas = new GLCanvas(caps);

glcanvas.setSize(400, 400);

 

StackPane pane = new StackPane();

stage.setScene(new Scene(pane, 400, 400));

stage.show();

} catch(Exception e) {

e.printStackTrace();

}

}

 

@Override

public void display(GLAutoDrawable arg0) {

// TODO Auto-generated method stub

 

}

 

@Override

public void dispose(GLAutoDrawable arg0) {

// TODO Auto-generated method stub

 

}

 

@Override

public void init(GLAutoDrawable arg0) {

// TODO Auto-generated method stub

 

}

 

@Override

public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {

// TODO Auto-generated method stub

 

}

}