Anda di halaman 1dari 5

08/06/13

Biblioteca Grfica OpenGl

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

Configurando o ambiente em Delphi


Crie um diretrio onde voc ir gravar o seu programa. Copie para este diretrio os arquivo OGLPanel.dcu. Crie um projeto em Delphi, insira um componente OGLPanel (figura 2) no formulrio do programa PASCAL e d a ele o nome (propriedade Name) GL1.

www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html

1/5

08/06/13

Biblioteca Grfica OpenGl

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;

Exibindo uma linha


Para fazer a exibio de qualquer entidade geomtrica 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
www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html 2/5

08/06/13

Biblioteca Grfica OpenGl

// 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

Biblioteca Grfica OpenGl

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.

OpenGL 3D Transformaes Geomtricas em OpenGL Uso de Luzes em OpenGL

Lista de Links sobre OpenGL


htttp://www.opengl.org http://www.xmission.com/~nate/tutors.html
www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html 4/5

08/06/13

Biblioteca Grfica OpenGl

www.inf.pucrs.br/~pinho/CG/Aulas/OpenGL/MustafaGL/MustafaGL.html

5/5

Anda mungkin juga menyukai