JOGL-基本テンプレートのAPI

JOGLプログラミングを使用すると、直線、三角形、回転、照明、色などの特殊効果を含む3D形状など、さまざまなグラフィック形状を描画できます。まず、JOGLでオブジェクトを描画するには、基本的なJOGLフレームを作成する必要があります。 。以下に、基本的なフレームを構築するために必要なクラスを示します。

GLEventListenerインターフェース

プログラムでJOGLグラフィカルAPIを使用できるようにするには、実装する必要があります GLEventListenerインターフェース。あなたは見つけることができますGLEventListener のインターフェース javax.media.opengl パッケージ。

次の表に、さまざまな方法の詳細と説明を示します。 GLEventListener インターフェイス-

シニア番号 メソッドと説明
1

Void display(GLAutoDrawable drawable)

クライアントによるOpenGLレンダリングを開始するために、GLAutoDrawableインターフェイスのオブジェクトによって呼び出されます。つまり、このメソッドには、OpenGLAPIを使用してグラフィック要素を描画するために使用されるロジックが含まれています。

2

Void dispose(GLAutoDrawable drawable)

このメソッドは、メモリバッファやGLSLプログラムなど、各GLContextごとにすべてのOpenGLリソースの解放を実行するようにリスナーに通知します。

3

Void init(GLAutoDrawble drawable)

これは、OpenGLコンテキストが初期化された直後に、GLAutoDrawableインターフェイスのオブジェクトによって呼び出されます。

4

Void reshape(GLAutoDrawble drawble, int x, int y, int width, int height)

これは、コンポーネントのサイズが変更された後の最初の再描画中に、GLAutoDrawableインターフェイスのオブジェクトによって呼び出されます。また、ウィンドウ上のコンポーネントの位置が変更されるたびに呼び出されます。

のすべての方法 GLEventListener のオブジェクトが必要 GLAutoDrawable パラメータとしてのインターフェース。

GLAutoDrawableインターフェース

このインターフェイスは、イベントベースのメカニズムを提供します (GLEventListener) OpenGLレンダリングを実行するため。 GLAutoDrawable に関連付けられているプラ​​イマリレンダリングコンテキストを自動的に作成します GLAutoDrawable オブジェクトの存続期間中。

次の表に、さまざまな方法の詳細と説明を示します。 GLAutoDrawable インターフェイス-

シニア番号 メソッドと説明
1

GL getGL()

GLAutoDrawableインターフェースの現在のオブジェクトによって使用されているGLパイプラインオブジェクトを返します。

2

void addGLEventListener(GLEventListener Listener)

指定されたリスナーを現在のドローアブルキューの最後に追加します。

3

void addGLEventListener(int index, GLEventListener listener)

このドローアブルキューの指定されたインデックスに指定されたリスナーを追加します。

4

void destroy()

Destroys GLContextを含む、GLAutoDrawableインターフェイスのこのオブジェクトに関連付けられているすべてのリソース。

Note−このパッケージには他のメソッドがあります。このインターフェースでは、テンプレートに関連するいくつかの重要なメソッドについてのみ説明します。

GLCanvasクラス

GLCanvas そして GLJpanel を実装するJOGLGUIの2つの主要なクラスです GLAutoDrawable OpenGLコマンドの描画面として利用できるインターフェイス。

GLCanvasは、OpenGLレンダリングサポートを提供する重量級のAWTコンポーネントです。これは、AWTAutoGLDrawableインターフェース。また、継承しますjava.awt.Canvasクラス。重量のある部品であるため、場合によっては、GLJCanvasスイングコンポーネントと正しく統合されない場合があります。したがって、Swingで使用する場合は注意が必要です。あなたが問題に直面するときはいつでもGLJCanvas、次に使用する必要があります GLJPanel クラス。

クラスの階層図 GLCanvas 以下のようになります−

  • GLEventistener インターフェースは GLCanvasクラス。の変化に対応しますGLCanvas クラスとそれらによって行われた描画要求に。

  • いつでも GLCanvas クラスがインスタンス化され、 init() の方法 GLEventListenerが呼び出されます。このメソッドをオーバーライドして、OpenGL状態を初期化できます。

  • いつでも GLCanvas 最初に描画(インスタンス化)またはサイズ変更され、 reshape() の方法 GLEventListener実行されます。これは、OpenGLビューポートと射影行列を初期化するために使用されます。コンポーネントの場所が変更されるたびに呼び出されます。

  • のdisplay()メソッド GLEventListener3Dシーンをレンダリングするためのコードが含まれています。display()メソッドがGLCanvas が呼び出されます。

以下に、GLCanvasクラスをインスタンス化するために必要なコンストラクターを示します。

シニア番号 コンストラクターと説明
1

GLCanvas()

デフォルトの画面デバイスで、デフォルトのOpenGL機能選択メカニズムを使用して、OpenGL機能のデフォルトセットを使用して新しいGLCanvasコンポーネントを作成します。

2

GLCanvas(GLCapabilitiesImmutable)

デフォルトの画面デバイスでデフォルトのOpenGL機能選択メカニズムを使用して、要求されたOpenGL機能のセットで新しいGLCanvasコンポーネントを作成します。

以下に、GLCanvasクラスのイベント処理に使用されるメソッドを示します。

シニア番号 メソッドと説明
1

void addGLEventListener(GLEventListener listener)

指定されたリスナーをこのドローアブルキューの最後に追加します。

2

void addGLEventListener(int indexGLEventListener listener)

このドローアブルキューの指定されたインデックスに指定されたリスナーを追加します。

インスタンス化するには GLCanvas クラス、あなたはのオブジェクトが必要です GLCapabilitiesImmutable OpenGL機能の不変のセットを指定するインターフェース。

のオブジェクトを取得する方法の1つ CapabilitiesImmutable インターフェイスはインスタンス化することです GLCapabilitiesインターフェイスを実装するクラス。のインスタンスGLCapabilities クラスは目的を果たすために使用できます。

GLCapabilitiesクラス

このクラスは、OpenGL機能のセットを指定します。GLCapabilitiesオブジェクトをパラメーターとして受け取ります。ザ・GLCapabilities クラスは、OpenGLプロファイルなど、レンダリングコンテキストがサポートする必要のある必要な機能を記述します。

以下に、GLCapabilitiesクラスをインスタンス化するコンストラクターを示します。

シニア番号 メソッドと説明
1

GLCapabilities(GLProfile glprofile)

GLCapabilitiesオブジェクトを作成します。

インスタンス化するには GLCanvas クラスには、OpenGL機能の不変のセットを指定するGLCapabilitiesImmutableインターフェイスのオブジェクトが必要です。

のオブジェクトを取得する方法の1つ CapabilitiesImmutable インターフェイスはインスタンス化することです GLCapabilitiesインターフェイスを実装するクラス。のインスタンスGLCapabilities クラスは目的を果たすために使用できます。

ザ・ GLCapabilities クラスには順番に GLProfile オブジェクト。

GLProfileクラス

OpenGLAPIのいくつかのバージョンがリリースされたので; プログラムで使用されているOpenGLAPIの正確なバージョンをJava仮想マシン(JVM)に指定する必要があります。これは、GLProfile クラス。

ザ・ get() このクラスのメソッドは、異なる定義済みを受け入れます Stringパラメータとしてのオブジェクト。各Stringオブジェクトはインターフェースの名前であり、各インターフェースは特定のバージョンのOpenGLをサポートします。このクラスを静的およびシングルトンとして初期化すると、シングルトンが得られますGLProfile 使用可能な各JOGLプロファイルのオブジェクト。

以下は、GLProfileクラスのgetメソッドのプロトタイプです。

シニア番号 方法と説明
1

Static GLProfile get(String profile)

デフォルトのデバイスを使用します。

これは静的メソッドであるため、クラス名を使用して呼び出す必要があり、パラメーターとして事前定義された静的文字列変数が必要です。このクラスには12個のそのような変数があり、それぞれがGLインターフェースの個別の実装を表します。

GLProfile.get(GLProfile.GL2);

get()メソッドのパラメーター

シニア番号 事前定義された文字列値(インターフェイス名)と説明
1

GL2

このインターフェイスには、すべてのOpenGL [1.0…3.0]メソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

2

GLES1

このインターフェイスには、すべてのOpenGL ES [1.0 ... 1.1]メソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

3

GLES2

このインターフェイスには、すべてのOpenGL ES 2.0メソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

4

GLES3

このインターフェイスには、すべてのOpenGL ES 3.0メソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

5

GL2ES1

このインターフェースには、GL2とGLES1の共通のサブセットが含まれています。

6

GL2ES2

このインターフェースには、GL3、GL2、およびGLES2の共通サブセットが含まれています。

7

GL2GL3

このインターフェイスには、コアGL3(OpenGL 3.1+)およびGL2の共通サブセットが含まれています。

8

GL3

このインターフェイスには、すべてのOpenGL [3.1 ... 3.3]コアメソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

9

GL3bc

このインターフェイスには、すべてのOpenGL [3.1 ... 3.3]互換性メソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

10

GL3ES3

このインターフェイスには、コアGL3(OpenGL 3.1+)およびGLES3(OpenGL ES 3.0)の共通サブセットが含まれています。

11

GL4

このインターフェイスには、すべてのOpenGL [4.0 ... 4.3]コアメソッドと、この仕様の時点で定義されているほとんどの拡張機能が含まれています。

12

GL4bc

このインターフェイスには、すべてのOpenGL [4.0 ... 4.3]互換性プロファイルとこの仕様の時点で定義されているほとんどの拡張機能が含まれています。

13

GL4ES3

コアGL4(OpenGL 4.0+)およびGLES3(OpenGL ES 3.0)の共通サブセットを含むインターフェース。

GLJPanelクラス

これは、OpenGLレンダリングサポートを提供する軽量のSwingコンポーネントです。Swingとの互換性のために提供されています。

GLJPanelクラス階層

以下の図は、GLJPanelクラスのクラス階層を表しています。

以下に、さまざまなコンストラクターGLJPanelクラスを示します。

シニア番号 コンストラクターと説明
1

GJPanel()

これは、OpenGL機能のデフォルトセットを使用して新しいGLJPanelコンポーネントを作成します。

2

(GLCapabilitiesImmutable)

要求されたOpenGL機能のセットを使用して新しいGLJPanelコンポーネントを作成します。

3

GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser)

新しいGLJPanelコンポーネントを作成します。

以下にGLJPanelクラスのメソッドを示します。

シニア番号 メソッドと説明
1

void addGLEventListener(GLEventListener listener)

このメソッドは、指定されたリスナーをこのドローアブルキューの最後に追加します。

2

void addGLEventListener(int indexGLEventListener listener)

このメソッドは、このドローアブルキューの指定されたインデックスに指定されたリスナーを追加します。