OpenGL em Delphi

Introdução

Nos exemplos deste material, você irá encontrar instruções de como utilizar OpenGL em Delphi usando um componente criado por Mustafa Kasap  [email protected], da Turquia.


Instalando o compomente

Em primeiro lugar, transfira para o seu computador os componentes e o programa exemplo.

Após a transferência, descompacte os arquivos e instale o componente conforme a versão do Delphi que voce está usando.

Se estiver usando o Delphi 3 selecione Install Component e instale o arquivo OGLPanel.pas

InstallComp.jpg (11332 bytes)

Figura 1 - Instalação do Componente

Se estiver usando o Delphi 5 selecione Install Package e instale o arquivo OGLPanel.pas


Configurando o ambiente em Delphi

Crie um diretório onde você irá gravar o seu programa. Copie para este diretório os arquivo OGLPanel.dcu.

Crie um projeto em Delphi, insira um componente OGLPanel (figura 2) no formulário do programa PASCAL e dê a ele o nome (propriedade Name) GL1.  

OGLPanel.jpg (4098 bytes)
Figura 2 - Componente OGLPanel

Inclua no seu código(na declaração USES) a unit OpenGL.

Crie uma rotina para responder ao evento AfterLoad do componente OGLPanel. Dê a esta rotina o nome de InicializaTudo. Dentro desta rotina coloque o seguinte código:

procedure TForm1.InicializaTudo(Sender: TObject);
begin
    // Colocar aqui sempre estes comandos de inicialização do OpenGL
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity;
    glOrtho(-50,50,-50,50,-100,100);

    // desabilita a remoção aoutomaática de faces
    glDisable(GL_CULL_FACE);
end;

No exemplo acima o comando glOrtho define a janela de seleção onde se deseja trabalhar. Os parâmetros são os seguintes glOrtho(Xmin, Xmax, Ymin, Ymax, Zmin, Zmax).

Crie uma rotina para responder ao evento OnGLPaint  da GL1. Dê a esta rotina o nome de DesenhaTudo. Dentro desta rotina (DesenhaTudo) é que deverão ser colocados os comandos OpenGL aqui apresentados. 

Crie esta rotina sempre com, pelo menos, o seguinte conteúdo:

procedure TForm1.DesenhaTudo;
var i: integer;
begin
  // Limpa a Janela OpenGL

  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  
  // Aqui vão os comandos de desenhos de objetos.....
  // Todas as rotinas que usarem comandos OpenGL devem ter sua execução 
  // a partir desta rotina
  OGLPanel1.Swap;  // Conclui a exebição dos objetos OpenGL
end;

Exibindo uma linha

Para fazer a exibição de qualquer entidade geométrica a OpenGL possui os comandos glBegin e glEnd. Estes comandos definem blocos de programa (como sub-rotinas) dentro dos quais se pode colocar comandos de desenho. Por exemplo, imagine a seguinte rotina:

Para desenhar outros objetos tente: GL_POINTS, GL_LINE_STRIP e GL_LINE_LOOP.

glBegin(GL_LINE_LOOP);
   glVertex2f(0,0);   // primeiro vértice
   glVertex2f(30,0);  // segundo vértice
   glVertex2f(30,30); // terceiro vértice
   glVertex2f(0,30);  // quarto vértice
glEnd; // final do desenho

Exibindo polígonos

Para exibir polígonos preenchidos use GL_TRIANGLES ou GL_QUADS.

glBegin(GL_TRIANGLES);
    glColor3f(1,0,0); // Vermelho
    glVertex2f(0,0); // primeiro vértice
    glColor3f(1,1,0); // amarelo
    glVertex2f(30,0); // segundo vértice
    glColor3f(1,1,1); // branco
    glVertex2f(35,30); // terceiro vértice
glEnd; // final do desenho
wpe2.jpg (9874 bytes)

 

Redesenhando a tela

Veja exemplo. wpe15.jpg (13740 bytes)

 


OpenGL 3D

Transformações Geométricas em OpenGL

Uso de Luzes em OpenGL


Lista de Links sobre OpenGL

htttp://www.opengl.org

http://www.xmission.com/~nate/tutors.html