Jogl-canvas-with-awt
JOGL-AWTを備えたキャンバス
この章では、Canvas with AWT frameを使用してJOGL基本フレームを描画する方法について説明します。 ここでは、AWTフレームを構築し、フレームクラスの* add()*メソッドを使用してキャンバスオブジェクトをAWTフレームに追加します。
以下は、JOGLのCanvasクラスとAWTのFrameクラスの組み合わせでJOGL基本フレームを作成するプログラムを作成する手順です。
ステップ1:クラスの作成
最初に GlEventListener インターフェースを実装するクラスを作成し、パッケージjavax.media.openglをインポートします。 4つのメソッドをすべて実装します* display()、dispose()、* * reshape()、init()。これは基本フレームなので、キャンバスクラスの作成、フレームへの追加などの基本的なタスクについて説明しました。 すべての *GLEVentListener インターフェイスメソッドは実装されていません。
ステップ2:キャンバスの準備
(a) GLCanvas クラスオブジェクトの構築
final GLCanvas glcanvas = new GLCanvas( xxxxxxx );
//here capabilities obj should be passed as parameter
(b) GLCapabilities クラスのインスタンス化
GLCapabilities capabilities = new GLCapabilities( xxxxx );
//here profile obj should be passed as parameter
(c) GLProfile オブジェクトの生成
これは静的メソッドであるため、クラス名を使用して呼び出されます。 このチュートリアルはJOGL2に関するものなので、GL2インターフェイスオブジェクトを生成しましょう。
final GLProfile profile = GLProfile.get( GLProfile.GL2 );
//both, variable and method are static hence both are called using class name.
canvasのコードスニペットを見てみましょう。
//getting the capabilities object of GL2 profile
final GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities capabilities = new GLCapabilities(profile);
//The canvas
final GLCanvas glcanvas = new GLCanvas(capabilities);
(d) * addGLEventListener()メソッドを使用して *GLEventListener をキャンバスに追加します。 このメソッドには、パラメータとして GLEventListener インターフェイスのオブジェクトが必要です。 したがって、 GLEventListener を実装するクラスのオブジェクトを渡します。
BasicFrame basicframe = newBasic Frame( );//class which implements
GLEventListener interface
glcanvas.addGLEventListener( basicframe );
(e) javax.media.opengl.awt.AWTGLAutoDrawableからGLCanvasによって継承されたsetSize()メソッドを使用してフレームのサイズを設定します。
glcanvas.setSize( 400, 400 );
これで、 GLCanvas の準備が整いました。
ステップ3:フレームの作成
JSE AWTフレームコンポーネントの Frame クラスオブジェクトをインスタンス化してフレームを作成します。
キャンバスを追加して、フレームを表示します。
//creating frame
final Frame frame = new frame( " Basic Frame" );
//adding canvas to frame
frame.add( glcanvas );
frame.setVisible( true );
ステップ4:フレームを全画面表示する
フレームを全画面で表示するには、 java.awt.Toolkit クラスを使用してデフォルトの画面サイズを取得します。 次に、これらのデフォルトの画面サイズの寸法を使用して、* setSize()*メソッドを使用してフレームサイズを設定します。
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(screenSize.width, screenSize.height);
AWTを使用して基本的なフレームを生成するプログラムを見てみましょう-
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.JFrame;
public class BasicFrame implements GLEventListener {
@Override
public void display(GLAutoDrawable arg0) {
//method body
}
@Override
public void dispose(GLAutoDrawable arg0) {
//method body
}
@Override
public void init(GLAutoDrawable arg0) {
//method body
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
//method body
}
public static void main(String[] args) {
//getting the capabilities object of GL2 profile
final GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities capabilities = new GLCapabilities(profile);
//The canvas
final GLCanvas glcanvas = new GLCanvas(capabilities);
BasicFrame b = new BasicFrame();
glcanvas.addGLEventListener(b);
glcanvas.setSize(400, 400);
//creating frame
final Frame frame = new Frame (" Basic Frame");
//adding canvas to frame
frame.add(glcanvas);
frame.setSize( 640, 480 );
frame.setVisible(true);
}
}
上記のプログラムをコンパイルして実行すると、次の出力が生成されます。 AGLで GLCanvas クラスを使用すると形成される基本的なフレームを示しています-