Jonh Edson Ribeiro de Carvalho | IC-UFF
Computação Visual e Interfaces
 
 
Tutorial OpenGL

1.3. Compilando programas que utilizam OpenGL

Todos os programas deste curso foram criados e testados no Linux (www.linux.org), e utilizam GLUT como biblioteca auxiliar para manipular janelas e tratar eventos. Esta escolha pode ser justificada por duas razões principais:

  1. O Linux (clone do Unix) é, de longe, o melhor sistema operacional do mundo, do sistema solar (já está presente até em Marte) e, brevemente, da galáxia, nas futuras viagens interplanetárias. Um programa escrito em C padrão, compilado e testado no Linux, também funcionará a contento em outros sistemas, principalmente se for compilado com a mesma ferramenta utilizada para compilar os exemplos deste curso, o gcc, da GNU (www.gnu.org). Além de ser gratuito, este compilador é bastante otimizado e possui versões disponíveis para a maioria dos sistemas operacionais existentes.

  2. O GLUT está implementado em diversos sistemas operacionais, facilitando a portabilidade de programas.

As tarefas de compilação foram automatizadas com o utilitário make. O make determina automaticamente que partes de um grande programa necessitam ser recompiladas e os comandos necessários para recompilá-las, a partir da leitura das regras definidas em um arquivo Makefile. Assim, para efetuar a compilação do programa, basta executar o comando make, ao invés de digitar dezenas de comandos no prompt do Unix.

O Makefile da Figura 1-1 foi utilizado para compilar os exemplos desse curso. Para obter uma cópia deste arquivo clique aqui.

Figura 1-1. arquivo Makefile

# Compila programas do curso de OpenGL
# digite: make programa.c
#

CC = gcc
CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE 
-D_BSD_SOURCE -DSHM -I/usr/X11R6/include
XLIBS = -L/usr/X11/lib -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE

##### MACROS #####

INCDIR = /usr/include
LIBDIR = /usr/lib

GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL -lm $(XLIBS)

LIB_DEP = $(LIBDIR)/$(GL_LIB)

##### RULES #####

.SUFFIXES:
.SUFFIXES: .c

.c: $(LIB_DEP)
	$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@

##### TARGETS ######

clean:
	-rm *.o *~

As regras contidas neste arquivo Makefile incluem opções de compilação tais como -lglut, referente à biblioteca auxiliar GLUT, e -lMesaGLU -lMesaGL, referentes às bibliotecas padrão do OpenGL para o Mesa3d, possibilitando que programas simples possam ser fácilmente compilados.

Para testar se esse arquivo funciona no seu sistema, copie-o com o nome "Makefile" para um diretório, juntamente com o programa teste-make.c, mostrado na Figura 1-2. Dentro deste diretório, execute a seguinte seqüência de comandos:

$ make teste-make
$ teste-make

Caso apareça um quadrado branco dentro de uma janela com fundo preto, é sinal de que ocorreu tudo bem.

Figura 1-2. programa teste-make.c

/* programa teste-make.c */

#include <GL/glut.h>
#include <stdlib.h>

void display(void);
void keyboard(unsigned char key, int x, int y);

int main(int argc, char** argv){
  glutInit(&argc, argv);
  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize (256, 256); 
  glutInitWindowPosition (100, 100); 
  glutCreateWindow (argv[0]);
  glClearColor(1.0, 1.0, 1.0, 0.0);
  glShadeModel (GL_FLAT);
  glOrtho (0, 1, 0, 1, -1 ,1);
  glutDisplayFunc(display);
  glutMainLoop();
  return 0;
}


void display(void){
  int i;
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f (0.0, 0.0, 0.0);
  glBegin(GL_POLYGON);
  glVertex2f(0.25,0.25);
  glVertex2f(0.75,0.25);
  glVertex2f(0.75,0.75);
  glVertex2f(0.25,0.75);
  glEnd();
  glFlush();
}
CopyLeft Webmaster |Atualizado em 22/11/2003
Contato   Pesquisas e Projetos  Publicações   Home