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.