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
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.
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 rotinaOGLPanel1.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:
procedure TForm1.DesenhaTudo; begin // Limpa a janela // Colocar isto sempre no início desta rotina glClearColor (0.0,1.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
// Define a espessura da linha glLineWidth(2);
// Define a cor da linha (Amarela) glColor3f(1.0,1.0,0.0);
// Define o inicio de uma entidade geométrica do tipo GL_LINES glBegin(GL_LINES); glVertex2f(0,0); // primeiro vértice glVertex2f(40,40); // segundo vértice glEnd; // final do desenho
Gl1.Swap; // força a exibição das imagens
end;
Para desenhar outros objetos tente: GL_POINTS, GL_LINE_STRIP e GL_LINE_LOOP.
glBegin(GL_LINE_STRIP);
glColor3f(1.0,1.0,0.0); // define a cor amarela para a linha
glVertex2f(0,0); // primeiro vértice
glVertex2f(40,40); // segundo vértice
glColor3f(0.0,0.0,1.0); // muda a cor para azul
glVertex2f(-40,40); // terceiro vértice
glVertex2f(-40,-40); // quarto vértice
glEnd; // final do desenho
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
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 |
Veja exemplo. |
OpenGL 3D
Transformações Geométricas em OpenGL
Lista de Links sobre OpenGL
http://www.xmission.com/~nate/tutors.html