Atividade Parcial Computação Gráfica Douglas Ferraz Verçosa | 03087933 Gabriela Prestes Farias | 03058613 George Moraes de Sousa | 03113538 José Ribamar Queiroz da Silva Neto | 03118421 Sthefanye Guimarães Oliveira | 03116527 Manaus – AM 2022 Sumário 1. Introdução 3 2. OpenGL 4 2.1. Introdução ao OpenGL 4 2.2. Arquitetura do OpenGL 4 2.3. APIs Relacionadas ao OpenGL 5 2.4. Desenhando com OpenGL 5 3. Experimentos 6 3. Conclusão 10 1. Introdução A Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para a geração, manipulação e análise de imagens pelo computador. Atualmente, a Computação Gráfica está presente em quase todas as áreas do conhecimento humano, desde o projeto de um novo modelo de automóvel até o desenvolvimento de ferramentas de entretenimento, entre as quais estão os jogos eletrônicos. 2. OpenGL 2.1. Introdução ao OpenGL OpenGL é definida como "um programa de interface para hardware gráfico". Na verdade, OpenGL é uma biblioteca de rotinas gráficas e de modelagem, bi (2D) e tridimensional (3D), extremamente portável e rápida. Usando OpenGL é possível criar gráficos 3D com uma qualidade visual próxima de um ray tracer. Entretanto, a maior vantagem na sua utilização é a rapidez, uma vez que usa algoritmos cuidadosamente desenvolvidos e otimizados pela Silicon Graphics, Inc., líder mundial em Computação Gráfica e Animação. OpenGL não é uma linguagem de programação, é uma poderosa e sofisticada API (Application Programming Interface) para criação de aplicações gráficas 2D e 3D. Seu funcionamento é semelhante ao de uma biblioteca C, uma vez que fornece uma série.de funcionalidades. Normalmente se diz que um programa é baseado em OpenGL ou é uma aplicação OpenGL, o que significa que ele é escrito em alguma linguagem de programação que faz chamadas a uma ou mais bibliotecas OpenGL. 2.2. Arquitetura do OpenGL Quando a OpenGL é utilizada, em vez de descrever detalhadamente uma cena 2D ou 3D, basta especificar o conjunto de passos que devem ser seguidos para se obter o aspecto ou o efeito desejado. Esses passos envolvem chamadas a rotinas desta API que inclui em torno de 250 funções: 200 da própria biblioteca OpenGL e 50 da biblioteca GLU (OpenGL Utility Library), que faz parte da implementação OpenGL. Por ser portável, a OpenGL não possui funções para gerenciamento de janelas, tratamento de eventos ou manipulação de arquivos. Neste caso, são utilizadas as funções específicas de cada plataforma para tal propósito, como, por exemplo, a própria API do ambiente Microsoft Windows. Tampouco existe um formato de arquivo OpenGL para descrição dos modelos e ambientes virtuais. OpenGL oferece apenas um pequeno conjunto de primitivas gráficas, como pontos, linhas e polígonos, para exibição de modelos. Já a biblioteca GLU fornece algumas funções para modelagem. Superfícies quádricas, assim como curvas e superfícies NURBS (Non Uniform Rational B-Splines) são algumas delas. A palavra pipeline é usada para descrever um processo composto de duas ou mais etapas para a geração de uma imagem. A Figura mostra uma versão simplificada do pipeline OpenGL. Como uma aplicação faz chamadas a várias funções da API OpenGL, os comandos são armazenados em uma memória específica (buffer de comandos). Depois de ser preenchida com comandos de desenho de primitivas, iluminação e dados de textura, entre outros, ela é “esvaziada”, ou seja, os comandos e dados são passados para o próximo estágio do pipeline. 2.3. APIs Relacionadas ao OpenGL ● GLU (OpenGL Utility Library) ○ Parte do padrão OpenGL; ○ NURBS, trianguladores, quádricas, etc; ● AGL, GLX, WGL. ○ Camadas entre o OpenGL os diversos sistemas de janelas; ● GLUT (OpenGL Utility Toolkit) ○ API portátil de acesso aos sistemas de janelas; ○ Encapsula e esconde as camadas proprietárias; ○ Não é parte official do OpenGL; 2.4. Desenhando com OpenGL ● OpenGL funciona como uma máquina de estados. ● API tem rotinas para: ○ Desenhar primitivas geométricas e imagens; ○ Alterar variáveis de estado (ex.: cor, material, fontes de iluminação, etc) ○ Consultar variáveis de estado; ● OpenGL é um padrão em evolução. ○ Mecanismo padronizado de extensões; ○ Novas versões são estabelecidas por um comitê (ARB) de usuários e fabricantes. 3. Experimentos 3.1. Primitivas Gráficas As primitivas são os elementos gráficos mais simples que podem ser criados dentro de uma aplicação. A partir dessas primitivas são construídos cenários, personagens e objetos em uma aplicação de computação gráfica. 3.1.1 Pontos É o elemento mais simples a ser criado em qualquer produto de computação gráfica. O ponto pode ter sua cor e tamanho alterados, mas nada muito além disso. 3.1.2. Retas É o elemento que se constitui como um segmento criado entre dois pontos. Pode ser compreendido como uma sequencia de pontos, a linha pode ter sua espessura, estilo, cor e comprimento alterados. 3.1.3. Curvas Em se tratando das curvas, a geração é feita baseada em alguns pontos já conhecidos. Considerando esses pontos há duas formas principais de geração da curva, a primeira é a geração de uma curva que passe por todos os pontos e a segunda a identificação da melhor curva que represente os pontos, independente de passar por eles ou não. Em ambos os casos vamos considerar o termo geração de curvas. Primeira Técnica utilizada: Curva de Bézier - A curva de Bézier é uma curva polinomial expressa como a interpolação linear entre alguns pontos representativos, chamados de pontos de controle. Segunda Técnica utilizada: Curva Spline - é uma curva completa polinomial por partes consistindo de um conjunto de segmentos. 3.1.4 Projeção paralela x perspectiva A projeção perspectiva, produz uma imagem realista, porém não em suas verdadeiras medidas, executando uma operação dentro do espaço tridimensional para representar a cena vista de um ponto de observação a uma distância finita. 3. Conclusão Tendo em vista todos os aspectos observados sobre o OpenGL concluímos que se trata de uma biblioteca de rotinas gráficas 2D e 3D que é extremamente portátil e rápida de ser usada com intuito de desenvolvimento de aplicações gráficas para construções jogos que detém cenários e personagens sendo muito importante e eficiente nas suas funções de acordo com a aplicação desejada. 4. Referências https://github.com/Eduardodsb/Computacao-Grafica-OpenGl https://github.com/topics/computacao-grafica https://github.com/PranjalSahu/SplineFitting https://github.com/mateustoin/Computacao-Grafica https://www.gsigma.ufsc.br/~popov/aulas/cg/perspectiva/index.html https://sites.google.com/site/profferdesiqueiracompgrafica/aulas/aula-5---processamento-deimagens-e-primitivas https://pt.wikipedia.org/wiki/Curva_de_B%C3%A9zier http://www.ic.uff.br/~anselmo/cursos/CGI/slidesGrad/CG_aula8(curvasinterativas).pdf