Jogl-api-basic-template
JOGL-基本テンプレート用のAPI
JOGLプログラミングを使用すると、直線、三角形、回転、照明、色などの特殊効果を含む3D図形などのさまざまなグラフィカル図形を描画できます。 最初にJOGLでオブジェクトを描画するには、基本的なJOGLフレームを作成する必要があります。 以下は、基本的なフレームを構築するために必要なクラスです。
GLEventListenerインターフェイス
プログラムでJOGLグラフィカルAPIを使用できるようにするには、 GLEventListener インターフェイスを実装する必要があります。 GLEventListener インターフェースは、 javax.media.opengl パッケージにあります。
次の表は、さまざまなメソッドの詳細と GLEventListener インターフェイスの説明を示しています-
Sr.No. | Methods and Descriptions |
---|---|
1 |
Void display(GLAutoDrawable drawable) クライアントによるOpenGLレンダリングを開始するために、GLAutoDrawableインターフェイスのオブジェクトによって呼び出されます。 つまり、このメソッドには、OpenGL APIを使用してグラフィカル要素を描画するために使用されるロジックが含まれています。 |
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インターフェイス
このインターフェイスは、OpenGLレンダリングを実行するためのイベントベースのメカニズム*(GLEventListener)を提供します。 *GLAutoDrawable は、オブジェクトの存続期間中に GLAutoDrawable に関連付けられたプライマリレンダリングコンテキストを自動的に作成します。
次の表は、さまざまなメソッドの詳細と GLAutoDrawable インターフェイスの説明を示しています-
Sr.No | Methods and Descriptions |
---|---|
1 |
GL getGL() GLAutoDrawableインターフェイスの現在のオブジェクトによって使用されるGLパイプラインオブジェクトを返します。 |
2 |
void addGLEventListener(GLEventListener Listener) 指定されたリスナーを現在のドロアブルキューの最後に追加します。 |
3 |
void addGLEventListener(int index, GLEventListener listener) このドロアブルキューの指定されたインデックスに指定されたリスナーを追加します。 |
4 |
void destroy() GLContextを含む、GLAutoDrawableインターフェイスのこのオブジェクトに関連付けられているすべてのリソースを*破棄*します。 |
注意-このパッケージには他のメソッドがあります。 このインターフェイスでは、テンプレートに関連するいくつかの重要なメソッドのみが説明されています。
GLCanvasクラス
*GLCanvas* と *GLJpanel* は、OpenGLコマンドの描画面として利用できる *GLAutoDrawable* インターフェイスを実装するJOGL GUIの2つの主要なクラスです。
GLCanvasは、OpenGLレンダリングサポートを提供するヘビーウェイトAWTコンポーネントです。 これは、 AWTAutoGLDrawable インターフェイスの主要な実装です。 また、 java.awt.Canvas クラスを継承します。 重いコンポーネントであるため、特定の場合、 GLJCanvas はswingコンポーネントと正しく統合されない場合があります。 したがって、Swingで使用する場合は注意が必要です。 GLJCanvas で問題が発生した場合は、 GLJPanel クラスを使用する必要があります。
クラス GLCanvas の階層図は以下のようになります-
- GLEventistener インターフェースは、 GLCanvas クラスとともに機能します。 GLCanvas クラスの変更と、それらによって行われた描画要求に応答します。
- GLCanvas クラスがインスタンス化されるたびに、 GLEventListener の* init()*メソッドが呼び出されます。 このメソッドをオーバーライドして、OpenGL状態を初期化できます。
- GLCanvas が最初に描画(インスタンス化)またはサイズ変更されるたびに、 GLEventListener の* reshape()*メソッドが実行されます。 OpenGLビューポートと投影行列を初期化するために使用されます。 また、コンポーネントの場所が変更されるたびに呼び出されます。
- GLEventListener のdisplay()メソッドには、3Dシーンをレンダリングするためのコードが含まれています。 GLCanvas のdisplay()メソッドが呼び出されるたびに呼び出されます。
以下は、GLCanvasクラスをインスタンス化するために必要なコンストラクターです。
Sr.No | Constructor and Description |
---|---|
1 |
GLCanvas() デフォルトのOpenGL機能選択メカニズムを使用して、デフォルトのOpenGL機能のデフォルトのセットを使用して、デフォルトの画面デバイス上に新しいGLCanvasコンポーネントを作成します。 |
2 |
GLCanvas(GLCapabilitiesImmutable) デフォルトの画面デバイスでデフォルトのOpenGL機能選択メカニズムを使用して、要求されたOpenGL機能のセットで新しいGLCanvasコンポーネントを作成します。 |
以下は、GLCanvasクラスのイベント処理に使用されるメソッドです。
Sr. No. | Methods and Description |
---|---|
1 |
void addGLEventListener(GLEventListener listener) 指定されたリスナーをこのドロアブルキューの最後に追加します。 |
2 |
void addGLEventListener(int indexGLEventListener listener) このドロアブルキューの指定されたインデックスに指定されたリスナーを追加します。 |
*GLCanvas* クラスをインスタンス化するには、OpenGL機能の不変のセットを指定する *GLCapabilitiesImmutable* インターフェイスのオブジェクトが必要です。
*CapabilitiesImmutable* インターフェースのオブジェクトを取得する方法の1つは、インターフェースを実装する *GLCapabilities* クラスをインスタンス化することです。 *GLCapabilities* クラスのインスタンスを使用して目的を果たすことができます。
GLCapabilitiesクラス
このクラスは、OpenGL機能のセットを指定します。 GLCapabilitiesオブジェクトをパラメーターとして受け取ります。 GLCapabilities クラスは、OpenGLプロファイルなど、レンダリングコンテキストがサポートする必要がある機能を記述します。
以下は、GLCapabilitiesクラスをインスタンス化するコンストラクタです。
Sr. No. | Methods and Description |
---|---|
1 |
GLCapabilities(GLProfile glprofile) GLCapabilitiesオブジェクトを作成します。 |
*GLCanvas* クラスをインスタンス化するには、OpenGL機能の不変のセットを指定するGLCapabilitiesImmutableインターフェイスのオブジェクトが必要です。
*CapabilitiesImmutable* インターフェースのオブジェクトを取得する方法の1つは、インターフェースを実装する *GLCapabilities* クラスをインスタンス化することです。 *GLCapabilities* クラスのインスタンスを使用して目的を果たすことができます。
また、 GLCapabilities クラスには GLProfile オブジェクトが必要です。
GLProfileクラス
OpenGL APIのいくつかのバージョンがリリースされたため。プログラムで使用されているOpenGL APIの正確なバージョンをJava仮想マシン(JVM)に指定する必要があります。 これは、 GLProfile クラスを使用して行われます。
このクラスの* get()メソッドは、事前定義されたさまざまな *String オブジェクトをパラメーターとして受け入れます。 各Stringオブジェクトはインターフェイスの名前であり、各インターフェイスはOpenGLの特定のバージョンをサポートしています。 このクラスを静的およびシングルトンとして初期化すると、使用可能なJOGLプロファイルごとにシングルトン GLProfile オブジェクトが提供されます。
以下は、GLProfileクラスのgetメソッドのプロトタイプです。
Sr.No. | Method and Description |
---|---|
1 |
Static GLProfile get(String profile) デフォルトのデバイスを使用します。 |
これは静的メソッドであるため、クラス名を使用して呼び出す必要があり、パラメーターとして定義済みの静的文字列変数が必要です。 このクラスには12個のそのような変数があり、それぞれがGLインターフェイスの個々の実装を表します。
GLProfile.get(GLProfile.GL2);
get()メソッドのパラメーター
次の表は、 GLProfile クラスの* get()*メソッドのStringパラメーターを示しています-
Sr.No | Predefined String value (Interface name) and Description |
---|---|
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]この仕様の時点で定義されている_core_メソッドとその拡張のほとんど。 |
9 |
GL3bc このインターフェイスには、すべてのOpenGL [3.1 … 3.3] _compatibility_メソッド、およびこの仕様の時点で定義されているほとんどの拡張機能。 |
10 |
GL3ES3 このインターフェイスには、コアGL3(OpenGL 3.1+)およびGLES3(OpenGL ES 3.0)の共通サブセットが含まれています。 |
11 |
GL4 このインターフェイスには、すべてのOpenGL [4.0 … 4.3] _core_メソッド、およびこの仕様の時点で定義されているほとんどの拡張。 |
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クラスのさまざまなコンストラクタです。
Sr. No. | Constructors and Description |
---|---|
1 |
GJPanel() OpenGL機能のデフォルトセットを使用して、新しいGLJPanelコンポーネントを作成します。 |
2 |
(GLCapabilitiesImmutable) 要求されたOpenGL機能のセットを使用して、新しいGLJPanelコンポーネントを作成します。 |
3 |
GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser) 新しいGLJPanelコンポーネントを作成します。 |
以下は、GLJPanelクラスのメソッドです。
Sr.No. | Methods and Description |
---|---|
1 |
void addGLEventListener(GLEventListener listener) このメソッドは、指定されたリスナーをこのドロアブルキューの最後に追加します。 |
2 |
void addGLEventListener(int indexGLEventListener listener) このメソッドは、このドロアブルキューの指定されたインデックスに指定されたリスナーを追加します。 |