Jogl-canvas-with-awt

提供:Dev Guides
移動先:案内検索

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 クラスを使用すると形成される基本的なフレームを示しています-

基本フレーム