2009年5月23日土曜日

JavaFXでJOGLを動かす - 2.WireCubeの背景を透過する

同じ研究室の人が物体をアニメーションさせることをしていたので、ちょっと違う方面をやってみる。

非矩形ウィンドウというやつ。
めっさ悩んだけど、GLPanelの背景を透過させることができたので、それを使う。

JOGLのほうは、クラスとパッケージの名前を変えただけで前回と同じ。

Fx_TransparentSimpleCube.fx
package fx_TransparentSimpleCube;

import javafx.stage.Stage;
import javafx.scene.Scene;

import javax.media.opengl.GLJPanel;
import fx_TransparentSimpleCube.Gl_TransparentSimpleCube;
import javafx.ext.swing.SwingComponent;

import javafx.scene.paint.Color;
import javafx.stage.StageStyle;
import javafx.scene.effect.DropShadow;

var panel:GLJPanel = new GLJPanel();
panel.addGLEventListener(new Gl_TransparentSimpleCube());

//GLJPanelを透明化
panel.setOpaque(false);

var swingComp:SwingComponent = SwingComponent.wrap(panel);{
    swingComp.height = 300;
    swingComp.width = 300;

    //3Dにエフェクトをつける
    swingComp.effect = DropShadow {
        offsetX: 10
        offsetY: 10
        color: Color.BLACK
        radius: 10
    };

}

Stage {
    title : "TransparentSimpleCube"
    //枠を透明化
    style : StageStyle.TRANSPARENT
    scene: Scene {
        //シーンを透明化
        fill: Color.TRANSPARENT
        width: swingComp.width
        height: swingComp.height
        content: [
            swingComp
        ]
    }
}
実行結果