JOGL - API para modelo básico

Usando a programação JOGL, é possível desenhar várias formas gráficas, como linhas retas, triângulos, formas 3D, incluindo efeitos especiais como rotação, iluminação, cores, etc. Para desenhar objetos em JOGL, em primeiro lugar, temos que construir um quadro JOGL básico . Abaixo são fornecidas as classes necessárias para construir um quadro básico.

Interface GLEventListener

Para tornar seu programa capaz de usar a API gráfica JOGL, você precisa implementar GLEventListenerinterface. Você pode encontrar oGLEventListener interface no javax.media.opengl pacote.

A tabela a seguir fornece os detalhes de vários métodos e descrições de GLEventListener interface -

Sr. Não. Métodos e Descrições
1

Void display(GLAutoDrawable drawable)

É chamado pelo objeto da interface GLAutoDrawable para iniciar a renderização OpenGL pelo cliente. ou seja, este método contém a lógica usada para desenhar elementos gráficos usando a API OpenGL.

2

Void dispose(GLAutoDrawable drawable)

Este método sinaliza ao ouvinte para realizar a liberação de todos os recursos OpenGL por cada GLContext, como buffers de memória e programas GLSL.

3

Void init(GLAutoDrawble drawable)

É chamado pelo objeto da interface GLAutoDrawable imediatamente após o contexto OpenGL ser inicializado.

4

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

É chamado pelo objeto da interface GLAutoDrawable durante a primeira repintura após o redimensionamento do componente. Também é chamado sempre que a posição do componente na janela é alterada.

Todos os métodos de GLEventListener requer objeto de GLAutoDrawable interface como um parâmetro.

Interface GLAutoDrawable

Esta interface fornece um mecanismo baseado em eventos (GLEventListener) para executar renderização OpenGL. GLAutoDrawable cria automaticamente um contexto de renderização primária que está associado com GLAutoDrawable durante a vida útil do objeto.

A tabela a seguir fornece os detalhes de vários métodos e descrições de GLAutoDrawable interface -

Sr. Não Métodos e Descrições
1

GL getGL()

Retorna o objeto de pipeline GL que é usado pelo objeto atual da interface GLAutoDrawable.

2

void addGLEventListener(GLEventListener Listener)

Adiciona o ouvinte fornecido ao final da fila drawable atual.

3

void addGLEventListener(int index, GLEventListener listener)

Adiciona o ouvinte fornecido no índice fornecido desta fila drawable.

4

void destroy()

Destroys todos os recursos associados a este objeto da interface GLAutoDrawable, incluindo o GLContext.

Note- Existem outros métodos neste pacote. Apenas alguns métodos importantes relativos ao modelo são discutidos nesta interface.

Classe GLCanvas

GLCanvas e GLJpanel são as duas classes principais de JOGL GUI que implementam GLAutoDrawable interface, que pode ser utilizada como superfície de desenho para comandos OpenGL.

GLCanvas é um componente AWT pesado que fornece suporte de renderização OpenGL. Esta é a implementação primária de umAWTAutoGLDrawableinterface. Também herdajava.awt.Canvasclasse. Por ser um componente pesado, em certos casos,GLJCanvaspode não se integrar ao componente de giro corretamente. Portanto, deve-se ter cuidado ao usá-lo com o Swing. Sempre que você enfrenta problemas comGLJCanvas, então você deve usar GLJPanel classe.

O diagrama hierárquico da classe GLCanvas pode ser como mostrado abaixo -

  • GLEventistener interface funciona junto com GLCanvasclasse. Ele responde às mudanças emGLCanvas aula e aos pedidos de desenho feitos por eles.

  • Sempre que GLCanvas classe é instanciada, o init() método de GLEventListeneré invocado. Você pode substituir esse método para inicializar o estado OpenGL.

  • Sempre que GLCanvas é desenhado inicialmente (instanciado) ou redimensionado, o reshape() método de GLEventListenerÉ executado. É usado para inicializar a janela de exibição OpenGL e a matriz de projeção. Ele também é chamado sempre que a localização do componente é alterada.

  • O método display () de GLEventListenercontém o código para renderizar cena 3D. É invocado sempre que o método display () deGLCanvas é invocado.

Abaixo são fornecidos os construtores necessários para instanciar a classe GLCanvas.

Sr. Não Construtor e Descrição
1

GLCanvas()

Ele cria um novo componente GLCanvas com um conjunto padrão de recursos OpenGL, usando o mecanismo de seleção de recursos OpenGL padrão, no dispositivo de tela padrão.

2

GLCanvas(GLCapabilitiesImmutable)

Ele cria um novo componente GLCanvas com o conjunto solicitado de recursos OpenGL usando o mecanismo de seleção de recursos OpenGL padrão no dispositivo de tela padrão.

Abaixo são fornecidos os métodos usados ​​para tratamento de eventos da classe GLCanvas.

Sr. Não. Métodos e Descrição
1

void addGLEventListener(GLEventListener listener)

Adiciona o ouvinte fornecido ao final desta fila drawable.

2

void addGLEventListener(int indexGLEventListener listener)

Adiciona o ouvinte fornecido no índice fornecido desta fila drawable.

Para instanciar GLCanvas classe, você precisa do objeto de GLCapabilitiesImmutable interface, que especifica um conjunto imutável de recursos OpenGL.

Uma das maneiras de obter um objeto de CapabilitiesImmutable interface é instanciar GLCapabilitiesclasse, que implementa a interface. Uma instância deGLCapabilities classe pode ser usada para servir ao propósito.

Classe GLCapabilities

Esta classe especifica um conjunto de recursos OpenGL. Leva o objeto GLCapabilities como parâmetro. oGLCapabilities A classe descreve os recursos desejados que um contexto de renderização deve suportar, como o perfil OpenGL.

Abaixo é fornecido um construtor para instanciar a classe GLCapabilities

Sr. Não. Métodos e Descrição
1

GLCapabilities(GLProfile glprofile)

Ele cria um objeto GLCapabilities.

Para instanciar GLCanvas classe, você precisa de um objeto de interface GLCapabilitiesImmutable, que especifica um conjunto imutável de recursos OpenGL.

Uma das maneiras de obter um objeto de CapabilitiesImmutable interface é instanciar GLCapabilitiesclasse, que implementa a interface. A instância deGLCapabilities classe pode ser usada para servir ao propósito.

o GLCapabilities aula, por sua vez, requer um GLProfile objeto.

Classe GLProfile

Uma vez que várias versões da API OpenGL foram lançadas; você precisa especificar a versão exata da API OpenGL sendo usada em seu programa para sua Java Virtual Machine (JVM). Isso é feito usando oGLProfile classe.

o get() método desta classe aceita diferentes predefinidos Stringobjetos como parâmetros. Cada objeto String é o nome de uma interface e cada interface oferece suporte a certas versões do OpenGL. Se você inicializar esta classe como estática e singleton, ela lhe dará um singletonGLProfile objetos para cada perfil JOGL disponível.

Abaixo, está o protótipo do método get da classe GLProfile.

Sr. Não. Método e Descrição
1

Static GLProfile get(String profile)

Usa o dispositivo padrão.

Como este é um método estático, você precisa invocá-lo usando o nome da classe e requer uma variável de string estática predefinida como parâmetro. Existem 12 dessas variáveis ​​nesta classe, cada uma representa uma implementação individual da interface GL.

GLProfile.get(GLProfile.GL2);

Parâmetros do método get ()

Sr. Não Valor de string predefinido (nome da interface) e descrição
1

GL2

Esta interface contém todos os métodos OpenGL [1.0… 3.0], bem como a maioria de suas extensões definidas no momento desta especificação.

2

GLES1

Esta interface contém todos os métodos OpenGL ES [1.0 ... 1.1], bem como a maioria de suas extensões definidas no momento desta especificação.

3

GLES2

Essa interface contém todos os métodos OpenGL ES 2.0, bem como a maioria de suas extensões definidas no momento desta especificação.

4

GLES3

Esta interface contém todos os métodos OpenGL ES 3.0, bem como a maioria de suas extensões definidas no momento desta especificação.

5

GL2ES1

Esta interface contém o subconjunto comum de GL2 e GLES1.

6

GL2ES2

Esta interface contém o subconjunto comum de GL3, GL2 e GLES2.

7

GL2GL3

Esta interface contém o subconjunto comum do núcleo GL3 (OpenGL 3.1+) e GL2.

8

GL3

Esta interface contém todos os métodos principais do OpenGL [3.1 ... 3.3] , bem como a maioria de suas extensões definidas no momento desta especificação.

9

GL3bc

Esta interface contém todos os métodos de compatibilidade OpenGL [3.1 ... 3.3] , bem como a maioria de suas extensões definidas no momento desta especificação.

10

GL3ES3

Esta interface contém o subconjunto comum do núcleo GL3 (OpenGL 3.1+) e GLES3 (OpenGL ES 3.0).

11

GL4

Esta interface contém todos os métodos principais do OpenGL [4.0 ... 4.3] , bem como a maioria de suas extensões definidas no momento desta especificação.

12

GL4bc

Esta interface contém todos os perfis de compatibilidade OpenGL [4.0 ... 4.3] , assim como a maioria de suas extensões definidas no momento desta especificação.

13

GL4ES3

Interface contendo o subconjunto comum do núcleo GL4 (OpenGL 4.0+) e GLES3 (OpenGL ES 3.0).

Classe GLJPanel

É um componente Swing leve que fornece suporte de renderização OpenGL. É fornecido para compatibilidade com Swing.

Hierarquia de classe GLJPanel

A seguir, o diagrama que representa a hierarquia de classes da classe GLJPanel.

Abaixo são fornecidos vários construtores da classe GLJPanel.

Sr. Não. Construtores e descrição
1

GJPanel()

Ele cria um novo componente GLJPanel com um conjunto padrão de recursos OpenGL.

2

(GLCapabilitiesImmutable)

Ele cria um novo componente GLJPanel com o conjunto solicitado de recursos OpenGL.

3

GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser)

Ele cria um novo componente GLJPanel.

Abaixo são fornecidos os métodos da classe GLJPanel.

Sr. Não. Métodos e Descrição
1

void addGLEventListener(GLEventListener listener)

Este método adiciona o ouvinte fornecido ao final desta fila drawable.

2

void addGLEventListener(int indexGLEventListener listener)

Este método adiciona o ouvinte fornecido no índice fornecido desta fila drawable.