Java OpenGL javaFxでの実装
それで色々と調べたところ、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
}
}