JOGL - API dla szablonu podstawowego

Za pomocą programowania JOGL można rysować różne kształty graficzne, takie jak linie proste, trójkąty, kształty 3D łącznie z efektami specjalnymi, takimi jak obrót, oświetlenie, kolory itp. Aby narysować obiekty w JOGL przede wszystkim musimy skonstruować podstawową ramkę JOGL . Poniżej podane są klasy wymagane do skonstruowania ramy podstawowej.

Interfejs GLEventListener

Aby Twój program mógł korzystać z graficznego interfejsu API JOGL, musisz go zaimplementować GLEventListenerberło. Możesz znaleźćGLEventListener interfejs w javax.media.opengl pakiet.

Poniższa tabela zawiera szczegółowe informacje na temat różnych metod i opisów GLEventListener interfejs -

Sr.No. Metody i opisy
1

Void display(GLAutoDrawable drawable)

Jest wywoływana przez obiekt interfejsu GLAutoDrawable w celu zainicjowania renderowania OpenGL przez klienta. tj. ta metoda zawiera logikę używaną do rysowania elementów graficznych przy użyciu interfejsu API OpenGL.

2

Void dispose(GLAutoDrawable drawable)

Ta metoda sygnalizuje odbiornikowi, aby zwolnił wszystkie zasoby OpenGL dla każdego GLContext, takie jak bufory pamięci i programy GLSL.

3

Void init(GLAutoDrawble drawable)

Jest wywoływana przez obiekt interfejsu GLAutoDrawable natychmiast po zainicjowaniu kontekstu OpenGL.

4

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

Jest wywoływana przez obiekt interfejsu GLAutoDrawable podczas pierwszego ponownego malowania po zmianie rozmiaru komponentu. Jest również wywoływana za każdym razem, gdy pozycja komponentu w oknie zostanie zmieniona.

Wszystkie metody GLEventListener wymagają przedmiotu GLAutoDrawable interfejs jako parametr.

GLAutoDrawable Interface

Ten interfejs udostępnia mechanizm oparty na zdarzeniach (GLEventListener) do renderowania OpenGL. GLAutoDrawable automatycznie tworzy główny kontekst renderowania, z którym jest skojarzony GLAutoDrawable przez cały okres użytkowania obiektu.

Poniższa tabela zawiera szczegółowe informacje na temat różnych metod i opisów GLAutoDrawable interfejs -

Sr.No Metody i opisy
1

GL getGL()

Zwraca obiekt potoku GL, który jest używany przez bieżący obiekt interfejsu GLAutoDrawable.

2

void addGLEventListener(GLEventListener Listener)

Dodaje podany detektor na koniec bieżącej kolejki do rysowania.

3

void addGLEventListener(int index, GLEventListener listener)

Dodaje podany detektor w podanym indeksie tej kolejki rysunkowej.

4

void destroy()

Destroys wszystkie zasoby związane z tym obiektem interfejsu GLAutoDrawable, w tym GLContext.

Note- W tym pakiecie są inne metody. W tym interfejsie omówiono tylko kilka ważnych metod dotyczących szablonu.

Klasa GLCanvas

GLCanvas i GLJpanel to dwie główne klasy interfejsu GUI JOGL, które implementują GLAutoDrawable interfejs, który można wykorzystać jako powierzchnie rysowania dla poleceń OpenGL.

GLCanvas to ciężki składnik AWT, który zapewnia obsługę renderowania OpenGL. To jest podstawowa implementacjaAWTAutoGLDrawableberło. Dziedziczy równieżjava.awt.Canvasklasa. Ponieważ jest to element ciężki, w niektórych przypadkachGLJCanvasmogą nie być poprawnie zintegrowane z komponentem swing. Dlatego należy zachować ostrożność podczas używania go z Swing. Zawsze, gdy masz problemy zGLJCanvas, musisz użyć GLJPanel klasa.

Hierarchiczny diagram klasy GLCanvas może być jak pokazano poniżej -

  • GLEventistener interfejs współpracuje z GLCanvasklasa. Reaguje na zmiany wGLCanvas klasa i do zgłoszonych przez nich żądań rysowania.

  • Kiedy tylko GLCanvas jest tworzona instancja klasy init() metoda GLEventListenerjest wywoływana. Możesz przesłonić tę metodę, aby zainicjować stan OpenGL.

  • Kiedy tylko GLCanvas jest rysowany początkowo (utworzony) lub zmieniony rozmiar, reshape() metoda GLEventListenerjest wykonywany. Służy do inicjalizacji rzutni OpenGL i macierzy projekcji. Jest również wywoływana za każdym razem, gdy zmienia się lokalizacja komponentu.

  • Metoda display () GLEventListenerzawiera kod do renderowania sceny 3D. Jest wywoływana za każdym razem, gdy metoda display ()GLCanvas jest wywoływana.

Poniżej podano konstruktory wymagane do utworzenia instancji klasy GLCanvas.

Sr.No Konstruktor i opis
1

GLCanvas()

Tworzy nowy komponent GLCanvas z domyślnym zestawem możliwości OpenGL, używając domyślnego mechanizmu wyboru możliwości OpenGL, na domyślnym urządzeniu ekranowym.

2

GLCanvas(GLCapabilitiesImmutable)

Tworzy nowy komponent GLCanvas z żądanym zestawem możliwości OpenGL przy użyciu domyślnego mechanizmu wyboru możliwości OpenGL na domyślnym urządzeniu ekranowym.

Poniżej podane są metody używane do obsługi zdarzeń klasy GLCanvas.

Sr. No. Metody i opis
1

void addGLEventListener(GLEventListener listener)

Dodaje podany detektor na końcu tej kolejki do rysowania.

2

void addGLEventListener(int indexGLEventListener listener)

Dodaje podany detektor w podanym indeksie tej kolejki rysunkowej.

Aby utworzyć wystąpienie GLCanvas klasa, potrzebujesz obiektu GLCapabilitiesImmutable interfejs, który określa niezmienny zestaw możliwości OpenGL.

Jednym ze sposobów na zdobycie obiektu CapabilitiesImmutable interfejs jest do utworzenia wystąpienia GLCapabilitiesklasa, która implementuje interfejs. WystąpienieGLCapabilities klasa może służyć do tego celu.

Klasa GLCapabilities

Ta klasa określa zestaw możliwości OpenGL. Jako parametr przyjmuje obiekt GLCapabilities. PlikGLCapabilities class opisuje pożądane możliwości, które musi obsługiwać kontekst renderowania, taki jak profil OpenGL.

Poniżej podano konstruktor do tworzenia instancji klasy GLCapabilities

Sr. No. Metody i opis
1

GLCapabilities(GLProfile glprofile)

Tworzy obiekt GLCapabilities.

Aby utworzyć wystąpienie GLCanvas class, potrzebujesz obiektu interfejsu GLCapabilitiesImmutable, który określa niezmienny zestaw możliwości OpenGL.

Jednym ze sposobów na zdobycie obiektu CapabilitiesImmutable interfejs jest do utworzenia wystąpienia GLCapabilitiesklasa, która implementuje interfejs. WystąpienieGLCapabilities klasa może służyć do tego celu.

Plik GLCapabilities klasa z kolei wymaga GLProfile obiekt.

Klasa GLProfile

Ponieważ wydano kilka wersji API OpenGL; musisz określić dokładną wersję interfejsu API OpenGL używanego w programie do wirtualnej maszyny języka Java (JVM). Odbywa się to za pomocąGLProfile klasa.

Plik get() metoda tej klasy akceptuje różne predefiniowane Stringobiekty jako parametry. Każdy obiekt String to nazwa interfejsu, a każdy interfejs obsługuje określone wersje OpenGL. Jeśli zainicjujesz tę klasę jako statyczną i pojedynczą, otrzymasz singletonGLProfile obiekty dla każdego dostępnego profilu JOGL.

Poniżej podano prototyp metody get z klasy GLProfile.

Sr.No. Metoda i opis
1

Static GLProfile get(String profile)

Używa domyślnego urządzenia.

Ponieważ jest to metoda statyczna, należy ją wywołać przy użyciu nazwy klasy i wymaga ona wstępnie zdefiniowanej statycznej zmiennej łańcuchowej jako parametru. W tej klasie jest 12 takich zmiennych, każda reprezentuje indywidualną implementację interfejsu GL.

GLProfile.get(GLProfile.GL2);

Parametry metody get ()

Sr.No Predefiniowana wartość ciągu (nazwa interfejsu) i opis
1

GL2

Ten interfejs zawiera wszystkie metody OpenGL [1.0… 3.0], a także większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

2

GLES1

Ten interfejs zawiera wszystkie metody OpenGL ES [1.0 ... 1.1], a także większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

3

GLES2

Ten interfejs zawiera wszystkie metody OpenGL ES 2.0, a także większość rozszerzeń zdefiniowanych w czasie tej specyfikacji.

4

GLES3

Ten interfejs zawiera wszystkie metody OpenGL ES 3.0, a także większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

5

GL2ES1

Ten interfejs zawiera wspólny podzbiór GL2 i GLES1.

6

GL2ES2

Ten interfejs zawiera wspólny podzbiór GL3, GL2 i GLES2.

7

GL2GL3

Ten interfejs zawiera wspólny podzbiór core GL3 (OpenGL 3.1+) i GL2.

8

GL3

Ten interfejs zawiera wszystkie podstawowe metody OpenGL [3.1 ... 3.3] , jak również większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

9

GL3bc

Ten interfejs zawiera wszystkie metody zgodności OpenGL [3.1 ... 3.3] , a także większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

10

GL3ES3

Ten interfejs zawiera wspólny podzbiór rdzeni GL3 (OpenGL 3.1+) i GLES3 (OpenGL ES 3.0).

11

GL4

Ten interfejs zawiera wszystkie podstawowe metody OpenGL [4.0 ... 4.3] , jak również większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

12

GL4bc

Ten interfejs zawiera wszystkie profile zgodności OpenGL [4.0 ... 4.3] , jak również większość jego rozszerzeń zdefiniowanych w czasie tej specyfikacji.

13

GL4ES3

Interfejs zawierający wspólny podzbiór core GL4 (OpenGL 4.0+) i GLES3 (OpenGL ES 3.0).

Klasa GLJPanel

Jest to lekki komponent Swing, który zapewnia obsługę renderowania OpenGL. Zapewnia kompatybilność z Swing.

Hierarchia klas GLJPanel

Poniższy diagram przedstawia hierarchię klas GLJPanel.

Poniżej podane są różne konstruktory klasy GLJPanel.

Sr. No. Konstruktorzy i opis
1

GJPanel()

Tworzy nowy komponent GLJPanel z domyślnym zestawem możliwości OpenGL.

2

(GLCapabilitiesImmutable)

Tworzy nowy komponent GLJPanel z żądanym zestawem możliwości OpenGL.

3

GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser)

Tworzy nowy komponent GLJPanel.

Poniżej podane są metody klasy GLJPanel.

Sr.No. Metody i opis
1

void addGLEventListener(GLEventListener listener)

Ta metoda dodaje podany detektor na końcu tej kolejki do rysowania.

2

void addGLEventListener(int indexGLEventListener listener)

Ta metoda dodaje podany detektor pod podanym indeksem tej kolejki rysunkowej.