Departamento de Ciência da
Computação - IME - USP
O objetivo dessa parte opcional do segundo exercício-programa (EP) é aprender a fazer um programa com parte gráfica usando OpenGL na plataforma Linux.
A partir de um terminal digite:
sudo apt-get install freeglut3-dev
Procure por freeglut, selecione freeglut3-dev, e clique em Apply.
A parte gráfica foi incluida para facilitar a visualização do Mondrian. Um programa executável da parte opcional em Linux se encontra no arquivo mondrianGL. Após o download, não se esqueça de torná-lo executável usando o comando chmod +x ./mondrianGL.
Para deixar a parte opcional mais interessante, incluimos a possibilidade de modificar a cor de uma região da seguinte forma:
#define NUM_CORES 12 float CORES[NUM_CORES][3]= { {1.0, 0.0, 0.0}, /* 0 red */ {0.0, 1.0, 0.0}, /* 1 green */ {0.0, 0.0, 1.0}, /* 2 blue */ {1.0, 1.0, 0.0}, /* 3 yellow */ {1.0, 0.0, 1.0}, /* 4 magenta */ {0.4, 0.2, 0.7}, /* 5 purple */ {0.2, 0.7, 0.4}, /* 6 green 2 */ {0.7, 0.4, 0.2}, /* 7 marrom */ {0.0, 1.0, 1.0}, /* 8 cyan */ {0.5, 0.5, 0.5}, /* 9 cinza */ {1.0, 1.0, 1.0}, /* 10 branco */ {0.0, 0.0, 0.0} /* 11 preto */ };ou seja, digite 0 para 'red', 1 para 'green', 2 para 'blue' etc.
Você pode editar essa tabela diretamente no esqueleto-ep2gl.c se desejar.
Outras opções dessa interface:
Lembre-se que a interface só "escuta" o teclado quando a janela gráfica estiver ativa, mas os números para troca de cor de uma região precisam ser digitados no terminal.
Para usar a parte opcional, utilize o esqueleto-ep2gl.c.
Esse esqueleto-ep2gl.c utiliza o OpenGL e GLUT para desenhar o Mondrian em uma janela. As seguintes funções são fornecidas (você não precisa implementar) para criar a interface gráfica:
void myReshape(int w, int h); void myKeyboard (unsigned char key, int x, int y); void myDisplay(void); void configuraParteGrafica(Imagem *R, Imagem *G, Imagem *B, int numRegioes, CelRegiao c[]);
Para utilizar a parte gráfica é necessário chamar duas funções no final da função main, logo antes do return 0;, da seguinte forma:
int main(int argc, char** argv) { /* declaracao das variaveis */ Imagem *imgC; /* imagem cinza */ Imagem *imgR; /* canal R da imagem colorida */ Imagem *imgG; /* canal G da imagem colorida */ Imagem *imgB; /* canal B da imagem colorida */ CelRegiao cabecas[MAX_REGIOES]; int numRegioes; /* declare outras variaveis */ /* escreva resto do main da forma que voce faria no EP2 sem a parte opcional, adaptando os nomes das variaveis declaradas acima. */ /* chamada de funcoes da parte grafica */ glutInit(&argc, argv); configuraParteGrafica(imgR, imgG, imgB, numRegioes, cabecas); return 0; }
-lglut -lGL -lGLU
Caso você queira usar o gcc diretamente para compilar o arquivo fonte esqueleto-ep2gl.c você pode digitar na linha de comando (já na pasta onde o arquivo fonte se encontra):
gcc -Wall -ansi -pedantic -O2 -Wno-unused-result esqueleto-ep2gl.c -o mondrianGL -lglut -lGL -lGLUque vai gerar o programa executável mondrianGL.