Используя программирование JOGL, можно рисовать различные графические фигуры, такие как прямые линии, треугольники, трехмерные фигуры, включая специальные эффекты, такие как вращение, освещение, цвета и т. Д. Чтобы нарисовать объекты в JOGL, прежде всего нам нужно создать базовую рамку JOGL. , Ниже приведены классы, необходимые для построения базового фрейма.
Интерфейс GLEventListener
Чтобы ваша программа могла использовать графический интерфейс JOGL, вам необходимо реализовать интерфейс GLEventListener . Вы можете найти интерфейс GLEventListener в пакете javax.media.opengl .
В следующей таблице приведены сведения о различных методах и описание интерфейса GLEventListener.
Sr.No. | Методы и описания |
---|---|
1 |
Пустой дисплей (GLAutoDrawable Drawable) Он вызывается объектом интерфейса GLAutoDrawable для инициирования рендеринга OpenGL клиентом. т. е. этот метод содержит логику, используемую для рисования графических элементов с использованием OpenGL API. |
2 |
Void dispose (GLAutoDrawable drawable) Этот метод сигнализирует слушателю выполнить освобождение всех ресурсов OpenGL для каждого GLContext, таких как буферы памяти и программы GLSL. |
3 |
Void init (GLAutoDrawble drawable) Он вызывается объектом интерфейса GLAutoDrawable сразу после инициализации контекста OpenGL. |
4 |
Изменение формы пустоты (GLAutoDrawble drawble, int x, int y, int width, int height) Он вызывается объектом интерфейса GLAutoDrawable во время первой перерисовки после изменения размера компонента. Он также вызывается всякий раз, когда изменяется положение компонента в окне. |
Пустой дисплей (GLAutoDrawable Drawable)
Он вызывается объектом интерфейса GLAutoDrawable для инициирования рендеринга OpenGL клиентом. т. е. этот метод содержит логику, используемую для рисования графических элементов с использованием OpenGL API.
Void dispose (GLAutoDrawable drawable)
Этот метод сигнализирует слушателю выполнить освобождение всех ресурсов OpenGL для каждого GLContext, таких как буферы памяти и программы GLSL.
Void init (GLAutoDrawble drawable)
Он вызывается объектом интерфейса GLAutoDrawable сразу после инициализации контекста OpenGL.
Изменение формы пустоты (GLAutoDrawble drawble, int x, int y, int width, int height)
Он вызывается объектом интерфейса GLAutoDrawable во время первой перерисовки после изменения размера компонента. Он также вызывается всякий раз, когда изменяется положение компонента в окне.
Для всех методов GLEventListener в качестве параметра требуется объект интерфейса GLAutoDrawable .
GLAutoDrawable интерфейс
Этот интерфейс предоставляет механизм на основе событий (GLEventListener) для выполнения рендеринга OpenGL. GLAutoDrawable автоматически создает основной контекст рендеринга, который связан с GLAutoDrawable на время существования объекта.
В следующей таблице приведены сведения о различных методах и описание интерфейса GLAutoDrawable.
Sr.No | Методы и описания |
---|---|
1 |
GL getGL () Возвращает объект конвейера GL, который используется текущим объектом интерфейса GLAutoDrawable. |
2 |
void addGLEventListener (GLEventListener Listener) Добавляет указанный слушатель в конец текущей очереди на рисование. |
3 |
void addGLEventListener (int index, слушатель GLEventListener) Добавляет указанный прослушиватель по указанному индексу этой очереди для рисования. |
4 |
уничтожить пустоту () Уничтожает все ресурсы, связанные с этим объектом интерфейса GLAutoDrawable, включая GLContext. |
GL getGL ()
Возвращает объект конвейера GL, который используется текущим объектом интерфейса GLAutoDrawable.
void addGLEventListener (GLEventListener Listener)
Добавляет указанный слушатель в конец текущей очереди на рисование.
void addGLEventListener (int index, слушатель GLEventListener)
Добавляет указанный прослушиватель по указанному индексу этой очереди для рисования.
уничтожить пустоту ()
Уничтожает все ресурсы, связанные с этим объектом интерфейса GLAutoDrawable, включая GLContext.
Примечание. В этом пакете есть и другие методы. В этом интерфейсе обсуждаются только несколько важных методов, относящихся к шаблону.
GLCanvas Class
GLCanvas и GLJpanel — это два основных класса графического интерфейса JOGL, которые реализуют интерфейс GLAutoDrawable , который можно использовать в качестве поверхностей рисования для команд OpenGL.
GLCanvas — это тяжелый компонент AWT, который обеспечивает поддержку рендеринга OpenGL. Это основная реализация интерфейса AWTAutoGLDrawable . Он также наследует класс java.awt.Canvas . Поскольку это тяжеловесный компонент, в некоторых случаях GLJCanvas может неправильно интегрироваться с компонентом Swing. Поэтому при использовании Swing необходимо соблюдать осторожность. Всякий раз, когда вы сталкиваетесь с проблемами с GLJCanvas , вы должны использовать класс GLJPanel .
Иерархическая диаграмма класса GLCanvas может быть такой, как показано ниже —
-
Интерфейс GLEventistener работает вместе с классом GLCanvas . Он отвечает на изменения в классе GLCanvas и на запросы рисования, сделанные ими.
-
Всякий раз, когда создается экземпляр класса GLCanvas , вызывается метод init () класса GLEventListener . Вы можете переопределить этот метод для инициализации состояния OpenGL.
-
Всякий раз, когда GLCanvas рисуется изначально ( создается ) или изменяется, выполняется метод reshape () GLEventListener . Он используется для инициализации окна просмотра OpenGL и матрицы проекции. Он также вызывается всякий раз, когда изменяется расположение компонента.
-
Метод display () в GLEventListener содержит код для рендеринга 3D-сцены. Он вызывается всякий раз, когда вызывается метод display () GLCanvas .
Интерфейс GLEventistener работает вместе с классом GLCanvas . Он отвечает на изменения в классе GLCanvas и на запросы рисования, сделанные ими.
Всякий раз, когда создается экземпляр класса GLCanvas , вызывается метод init () класса GLEventListener . Вы можете переопределить этот метод для инициализации состояния OpenGL.
Всякий раз, когда GLCanvas рисуется изначально ( создается ) или изменяется, выполняется метод reshape () GLEventListener . Он используется для инициализации окна просмотра OpenGL и матрицы проекции. Он также вызывается всякий раз, когда изменяется расположение компонента.
Метод display () в GLEventListener содержит код для рендеринга 3D-сцены. Он вызывается всякий раз, когда вызывается метод display () GLCanvas .
Ниже приведены конструкторы, необходимые для создания экземпляра класса GLCanvas.
Sr.No | Конструктор и описание |
---|---|
1 |
GLCanvas () Он создает новый компонент GLCanvas с набором возможностей OpenGL по умолчанию, используя механизм выбора возможностей OpenGL по умолчанию, на устройстве экрана по умолчанию. |
2 |
GLCanvas (GLCapabilitiesImmutable) Он создает новый компонент GLCanvas с запрошенным набором возможностей OpenGL, используя механизм выбора возможностей OpenGL по умолчанию на устройстве экрана по умолчанию. |
GLCanvas ()
Он создает новый компонент GLCanvas с набором возможностей OpenGL по умолчанию, используя механизм выбора возможностей OpenGL по умолчанию, на устройстве экрана по умолчанию.
GLCanvas (GLCapabilitiesImmutable)
Он создает новый компонент GLCanvas с запрошенным набором возможностей OpenGL, используя механизм выбора возможностей OpenGL по умолчанию на устройстве экрана по умолчанию.
Ниже приведены методы, используемые для обработки событий класса GLCanvas.
Старший | Методы и описание |
---|---|
1 |
void addGLEventListener (слушатель GLEventListener) Добавляет указанный слушатель в конец этой очереди на рисование. |
2 |
void addGLEventListener (слушатель int indexGLEventListener) Добавляет указанный прослушиватель по указанному индексу этой очереди для рисования. |
void addGLEventListener (слушатель GLEventListener)
Добавляет указанный слушатель в конец этой очереди на рисование.
void addGLEventListener (слушатель int indexGLEventListener)
Добавляет указанный прослушиватель по указанному индексу этой очереди для рисования.
Чтобы создать экземпляр класса GLCanvas , вам нужен объект интерфейса GLCapabilitiesImmutable , который задает неизменный набор возможностей OpenGL.
Один из способов получить объект интерфейса CapabilitiesImmutable — создать экземпляр класса GLCapabilities , который реализует интерфейс. Экземпляр класса GLCapabilities может использоваться для этой цели.
GLCapabilities Class
Этот класс определяет набор возможностей OpenGL. Он принимает объект GLCapabilities в качестве параметра. Класс GLCapabilities описывает желаемые возможности, которые должен поддерживать контекст рендеринга, например профиль OpenGL.
Ниже дан конструктор для создания экземпляра класса GLCapabilities
Старший | Методы и описание |
---|---|
1 |
GLCapabilities (GLProfile glprofile) Создает объект GLCapabilities. |
GLCapabilities (GLProfile glprofile)
Создает объект GLCapabilities.
Чтобы создать экземпляр класса GLCanvas , вам нужен объект интерфейса GLCapabilitiesImmutable, который задает неизменный набор возможностей OpenGL.
Один из способов получить объект интерфейса CapabilitiesImmutable — создать экземпляр класса GLCapabilities , который реализует интерфейс. Экземпляр класса GLCapabilities может использоваться для достижения цели.
Класс GLCapabilities, в свою очередь, требует объекта GLProfile .
GLProfile Class
Поскольку было выпущено несколько версий API OpenGL; вам нужно указать точную версию API OpenGL, используемую в вашей программе для вашей виртуальной машины Java (JVM). Это делается с помощью класса GLProfile .
Метод get () этого класса принимает различные предопределенные объекты String в качестве параметров. Каждый объект String является именем интерфейса, и каждый интерфейс поддерживает определенные версии OpenGL. Если вы инициализируете этот класс как статический и одноэлементный, он даст вам одноэлементные объекты GLProfile для каждого доступного профиля JOGL.
Ниже приведен прототип метода get класса GLProfile.
Sr.No. | Метод и описание |
---|---|
1 |
Статический GLProfile get (String профиль) Использует устройство по умолчанию. |
Статический GLProfile get (String профиль)
Использует устройство по умолчанию.
Поскольку это статический метод, вам необходимо вызывать его, используя имя класса, и в качестве параметра требуется предварительно определенная статическая строковая переменная. В этом классе 12 таких переменных, каждая из которых представляет отдельную реализацию интерфейса GL.
GLProfile.get(GLProfile.GL2);
Параметры метода get ()
Sr.No | Предопределенное строковое значение (имя интерфейса) и описание |
---|---|
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). |
GL2
Этот интерфейс содержит все методы OpenGL [1.0… 3.0], а также большинство его расширений, определенных во время данной спецификации.
GLES1
Этот интерфейс содержит все методы OpenGL ES [1.0 … 1.1], а также большинство его расширений, определенных во время данной спецификации.
GLES2
Этот интерфейс содержит все методы OpenGL ES 2.0, а также большинство его расширений, определенных во время данной спецификации.
GLES3
Этот интерфейс содержит все методы OpenGL ES 3.0, а также большинство его расширений, определенных на момент написания данной спецификации.
GL2ES1
Этот интерфейс содержит общее подмножество GL2 и GLES1.
GL2ES2
Этот интерфейс содержит общее подмножество GL3, GL2 и GLES2.
GL2GL3
Этот интерфейс содержит общее подмножество ядра GL3 (OpenGL 3.1+) и GL2.
GL3
Этот интерфейс содержит все основные методы OpenGL [3.1 … 3.3], а также большинство его расширений, определенных во время данной спецификации.
GL3bc
Этот интерфейс содержит все методы совместимости OpenGL [3.1 … 3.3], а также большинство его расширений, определенных во время данной спецификации.
GL3ES3
Этот интерфейс содержит общее подмножество ядра GL3 (OpenGL 3.1+) и GLES3 (OpenGL ES 3.0).
GL4
Этот интерфейс содержит все основные методы OpenGL [4.0 … 4.3], а также большинство его расширений, определенных во время данной спецификации.
GL4bc
Этот интерфейс содержит весь профиль совместимости OpenGL [4.0 … 4.3], а также большинство его расширений, определенных во время данной спецификации.
GL4ES3
Интерфейс, содержащий общее подмножество ядра GL4 (OpenGL 4.0+) и GLES3 (OpenGL ES 3.0).
GLJPanel Class
Это легкий компонент Swing, который обеспечивает поддержку рендеринга OpenGL. Это предусмотрено для совместимости с Swing.
GLJPanel Class Hierarchy
Ниже приведена диаграмма, представляющая иерархию классов класса GLJPanel.
Ниже приведены различные конструкторы класса GLJPanel.
Старший | Конструкторы и описание |
---|---|
1 |
GJPanel () Он создает новый компонент GLJPanel с набором возможностей OpenGL по умолчанию. |
2 |
(GLCapabilitiesImmutable) Он создает новый компонент GLJPanel с запрошенным набором возможностей OpenGL. |
3 |
GLJPanel (GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser) Создает новый компонент GLJPanel. |
GJPanel ()
Он создает новый компонент GLJPanel с набором возможностей OpenGL по умолчанию.
(GLCapabilitiesImmutable)
Он создает новый компонент GLJPanel с запрошенным набором возможностей OpenGL.
GLJPanel (GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser)
Создает новый компонент GLJPanel.
Ниже приведены методы класса GLJPanel.
void addGLEventListener (слушатель GLEventListener)
Этот метод добавляет данного слушателя в конец этой очереди на рисование.
void addGLEventListener (слушатель int indexGLEventListener)
Этот метод добавляет данного слушателя в заданный индекс этой рисуемой очереди.