Учебники

JOGL — API для базового шаблона

Используя программирование 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.

GJPanel

Ниже приведены различные конструкторы класса 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)

Этот метод добавляет данного слушателя в заданный индекс этой рисуемой очереди.