OpenGL em Delphi
Introduo
Nos exemplos deste material, voc ir encontrar instrues de como utilizar OpenGL em Delphi usando um componente criado por Mustafa Kasap mkasap@cs.deu.edu.tr, da Turquia.
Instalando o compomente
Em primeiro lugar, transfira para o seu computador os componentes e o programa exemplo. Aps a transferncia, descompacte os arquivos e instale o componente conforme a verso 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 - Instalao do Componente Se estiver usando o Delphi 5 selecione Install Package e instale o arquivo OGLPanel.pas
www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html
1/5
08/06/13
Figura 2 - Componente OGLPanel Inclua no seu cdigo(na declarao 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 cdigo: procedure TForm1.InicializaTudo(Sender: TObject); begin // Colocar aqui sempre estes comandos de inicializao do OpenGL glMatrixMode(GL_PROJECTION); glLoadIdentity; glOrtho(-50,50,-50,50,-100,100); // desabilita a remoo aoutomatica de faces glDisable(GL_CULL_FACE); end; No exemplo acima o comando glOrtho define a janela de seleo onde se deseja trabalhar. Os parmetros so 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 devero ser colocados os comandos OpenGL aqui apresentados. Crie esta rotina sempre com, pelo menos, o seguinte contedo: procedure TForm1.DesenhaTudo; var i: integer; begin // Limpa a Janela OpenGL glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Aqui vo os comandos de desenhos de objetos..... // Todas as rotinas que usarem comandos OpenGL devem ter sua execuo // a partir desta rotina OGLPanel1.Swap; // Conclui a exebio dos objetos OpenGL end;
08/06/13
// Colocar isto sempre no incio 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 geomtrica do tipo GL_LINES glBegin(GL_LINES); glVertex2f(0,0); // primeiro vrtice glVertex2f(40,40); // segundo vrtice glEnd; // final do desenho Gl1.Swap; // fora a exibio das imagens end; Para desenhar outros objetos tente: GL_POINTS, GL_LINE_STRIP e GL_LINE_LOOP. GL_POINTS exibe um ponto para cada glVertex; GL_LINE_STRIP exibe uma seqncia de linhas conectando os pontos definidos por glVertex; glBegin(GL_LINE_STRIP); glColor3f(1.0,1.0,0.0); // define a cor amarela para a linha glVertex2f(0,0); // primeiro vrtice glVertex2f(40,40); // segundo vrtice glColor3f(0.0,0.0,1.0); // muda a cor para azul glVertex2f(-40,40); // terceiro vrtice glVertex2f(-40,-40); // quarto vrtice glEnd; // final do desenho GL_LINE_LOOP exibe uma seqncia de linhas conectando os pontos definidos por glVertex e ao final liga o pimeiro com o ltimo ponto. glBegin(GL_LINE_LOOP); glVertex2f(0,0); // primeiro vrtice glVertex2f(30,0); // segundo vrtice glVertex2f(30,30); // terceiro vrtice glVertex2f(0,30); // quarto vrtice glEnd; // final do desenho
Exibindo polgonos
Para exibir polgonos preenchidos use GL_TRIANGLES ou GL_QUADS.
www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html
3/5
08/06/13
glBegin(GL_TRIANGLES); glColor3f(1,0,0); // Vermelho glVertex2f(0,0); // primeiro vrtice glColor3f(1,1,0); // amarelo glVertex2f(30,0); // segundo vrtice glColor3f(1,1,1); // branco glVertex2f(35,30); // terceiro vrtice glEnd; // final do desenho
Redesenhando a tela
Veja exemplo.
08/06/13
www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html
5/5