WireCubeを表示してみる。
Gl_SimpleCube.java
package fx_simpleCube; import javax.media.opengl.GL; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLEventListener; import com.sun.opengl.util.GLUT; import javax.media.opengl.GLJPanel; public class Gl_SimpleCube extends GLJPanel implements GLEventListener { private GL gl; private GLUT glut; public Gl_SimpleCube() { GLJPanel glc = new GLJPanel(); glc.addGLEventListener(this); this.add(glc); } public void init(GLAutoDrawable drawable) { gl = drawable.getGL(); glut = new GLUT(); gl.glClearColor(0.5f, 0.5f, 0.5f, 0.0f); } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { float ratio = (float)height / (float)width; gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); gl.glFrustum(-1.0f, 1.0f, -ratio, ratio, 5.0f, 40.0f); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -20.0f); } public void display(GLAutoDrawable drawable) { gl.glClear(GL.GL_COLOR_BUFFER_BIT); // 線画の立方体を描画 glut.glutWireCube(2.0f); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} }
Fx_SimpleCube.fx
package fx_simpleCube; import javafx.stage.Stage; import javafx.scene.Scene; import javax.media.opengl.GLJPanel; import fx_simpleCube.Gl_SimpleCube; import javafx.ext.swing.SwingComponent; var panel:GLJPanel = new GLJPanel(); panel.addGLEventListener(new Gl_SimpleCube()); var swingComp:SwingComponent = SwingComponent.wrap(panel); swingComp.height = 300; swingComp.width = 300; Stage { title : "SimpleCube" scene: Scene { width: swingComp.width height: swingComp.height content: [ swingComp ] } }
実行結果