Primeiramente me desculpem se já existe um tópico sobre isso, porém achei apenas o http://www.guj.com.br/java/276188-alguem-aqui-utiliza-opengl-com-java-jogl#1452970. Também sou novo no fórum e em java por isso não sei como usar muitos recursos do java e do fórum.
Estou trabalhando em um projeto que a ideia e usar OpenGL com java, porém não achei nenhum tutorial bom, os que eu achei da erro na hora de compilar, no tópico do link, diz que devemos tentar na raça, porém os comandos de OpenGL que conheço, eu tento converter porém diz que eu devo adicionar um cast ao gl, e o glut usado no opengl, no java openGL e o awt, porém não sei usá-lo com openGL(nem com java, só o actionListener, KeyListener, ActionEvent, etc.), então queria saber se algum de vocês conhecem algum bom tutorial de JOGL(Java OpenGL) ou se poderiam me ajudar a resolver o meu problema.
Se quiserem, o tutorial que eu peguei dava este programa(que da erro de compilação):
/**
* Classe JanelaExemploJava2D, junto com a classe Renderer2D, mostra um exemplo de
* como trabalhar com Java e OpenGL utilizando a API JOGL. É aberta uma
* janela na qual é desenhado um triângulo.
*
* @author Isabel H. Manssour e Marcelo Cohen
* @version 1.0
*/
import javax.swing.*;
import java.awt.*;
import javax.media.opengl.*;
public class JanelaExemploJava2d
{
private Renderer2D renderer;
/**
* Construtor da classe ExemploJava que não recebe parâmetros. Cria uma janela e insere
* um componente canvas OpenGL.
*/
public JanelaExemploJava2d()
{
// Cria janela
JFrame janela = new JFrame("Desenho de um triângulo em 2D");
janela.setBounds(50,100,500,500);
janela.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
BorderLayout layout = new BorderLayout();
Container caixa=janela.getContentPane();
caixa.setLayout(layout);
// Cria um objeto GLCapabilities para especificar o número de bits
// por pixel para RGBA
GLCapabilities c = new GLCapabilities();
c.setRedBits(8);
c.setBlueBits(8);
c.setGreenBits(8);
c.setAlphaBits(8);
// Cria o objeto que irá gerenciar os eventos
renderer = new Renderer2D();
// Cria um canvas, adiciona na janela, e especifica o objeto "ouvinte"
// para os eventos Gl, de mouse e teclado
GLCanvas canvas = new GLCanvas(c);
janela.add(canvas,BorderLayout.CENTER);
canvas.addGLEventListener(renderer);
canvas.addKeyListener(renderer);
janela.setVisible(true);
canvas.requestFocus();
}
/**
*
* Método main que apenas cria um objeto ExemploJava.
*/
public static void main(String args[])
{
JanelaExemploJava2d ej = new JanelaExemploJava2d();
}
}
E esse do Renderer2D
/**
* Classe Renderer2D, junto com a classe JanelaExemploJava2D, mostra um exemplo de
* como trabalhar com Java e OpenGL utilizando a API JOGL. É aberta uma
* janela na qual é desenhado um triângulo.
*
* @author Isabel H. Manssour e Marcelo Cohen
* @version 1.0
*/
import java.awt.event.*;
import javax.media.opengl.*;
import javax.media.opengl.glu.*;
public class Renderer2D extends KeyAdapter implements GLEventListener
{
// Atributos
private GL gl;
private GLU glu;
private GLAutoDrawable glDrawable;
/**
* Método definido na interface GLEventListener e chamado pelo objeto no qual será feito o desenho
* logo após a inicialização do contexto OpenGL.
*/
public void init(GLAutoDrawable drawable)
{
glDrawable = drawable;
gl = drawable.getGL();
glu = new GLU();
drawable.setGL(new DebugGL(gl));
gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
// Define a janela de visualização 2D
gl.glMatrixMode(GL.GL_PROJECTION);
glu.gluOrtho2D(-1.0,1.0,-1.0,1.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
}
/**
* Método definido na interface GLEventListener e chamado pelo objeto no qual será feito o desenho
* para começar a fazer o desenho OpenGL pelo cliente.
*/
public void display(GLAutoDrawable drawable)
{
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glLoadIdentity();
gl.glColor3f(0.0f, 0.0f, 1.0f);
// Desenha um triângulo no centro da janela
gl.glBegin(GL.GL_TRIANGLES);
gl.glVertex3d(-0.5,-0.5, 0.0);
gl.glVertex3d( 0.0, 0.5, 0.0);
gl.glVertex3d( 0.5,-0.5, 0.0);
gl.glEnd();
}
/**
* Método definido na interface GLEventListener e chamado pelo objeto no qual será feito o desenho
* depois que a janela foi redimensionada.
*/
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)
{
gl.glViewport(0, 0, width, height);
}
/**
* Método definido na interface GLEventListener e chamado pelo objeto no qual será feito o desenho
* quando o modo de exibição ou o dispositivo de exibição associado foi alterado.
*/
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { }
/**
* Método definido na interface KeyListener que está sendo implementado que seja
* feita a saída do sistema quando for pressionada a tecla ESC.
*/
public void keyPressed(KeyEvent e)
{
switch (e.getKeyCode())
{
case KeyEvent.VK_ESCAPE: System.exit(0);
break;
}
glDrawable.display();
}
}