Delphi 3D - Utilizando OpenGL em Aplicações - Revista Clube Delphi 136
Este artigo demonstra como utilizar os recursos presentes na OpenGL, uma biblioteca gráfica portável presente em vários sistemas operacionais, através do Delphi.
Este Artigo faz parte da Revista Clube Delphi 136 Ver Revista
Por que eu devo ler este artigo:Em um primeiro momento é apresentada uma explicação sobre a mesma, posteriormente sua implementação através da biblioteca GLScene, uma extensão da OpenGL para incorporar motor 3D na aplicação VCL.
Desenvolver um cenário virtual 3D baseado em OpenGL para ser utilizado na aplicação, porém nada impede que tal recurso seja utilizado para dar um pontapé inicial na composição de complexos mundos virtuais e até mesmo o desenvolvimento de jogos para PC, uma vez que neste artigo existe a apresentação de uma Engine 3D livre.
A utilização de recursos 3D atualmente está cada vez mais presente na vida das pessoas. Até mesmo aquele que não lida diretamente com a tecnologia desfruta deste artifício, seja no cinema, em um programa de TV qualquer ou em um Smartphone, entre tantos outros dispositivos eletrônicos. Os ambientes baseados em 3D podem oferecer um diferencial convidativo ao usuário, bem como propiciar uma experiência mais agradável do mesmo com a aplicação. A biblioteca OpenGL é uma boa alternativa para o desenvolvedor que deseja criar um mundo virtual. Como esta biblioteca possui suas particularidades, o desenvolvimento com a mesma pode ser complexo e demorado, entretanto basta utilizar a GLScene que simplifica sua implementação e abstrai suas funções. Vale a pena investir na aparência com a utilização deste recurso, afinal ela é a camada de contato direto entre o usuário e a aplicação.
A computação gráfica ganha cada vez mais espaço na atualidade. A criação e utilização de ambientes virtuais 3D e seus objetos é cada vez mais empregada no cinema, nos jogos e até mesmo nas aplicações de usuário. Tais ambientes envolvem uma diversidade de cálculos, figuras, texturas e muita criatividade, uma vez que o desenvolvedor não possui limites de software para a criação de cenas, personagens, entre outros. É evidente que existem várias ferramentas para que o objetivo final seja alcançado pelo desenvolvedor, que podem ser utilizadas individualmente ou em conjunto, de acordo com a necessidade do projeto. O Delphi também pode ser empregado para desenvolver ambientes 3D, cenas, objetos e efeitos utilizando a própria VCL. Embora seu foco não seja tal desenvolvimento, é possível utilizar APIs e Componentes para tanto, como a GLScene que será descrita posteriormente neste artigo, assim como importar objetos gráficos desenvolvidos em outras aplicações para o projeto VCL, como é o caso de modelos 3D criados com o Software Blender.Entretanto, para os desenvolvedores que possuem a versão XE 2 do Delphi, a biblioteca Firemonkey pode ser utilizada para a elaboração de animações e efeitos 3D na aplicação sem que exista a necessidade de adicionar objetos de terceiros.
A OpenGL
A OpenGL é uma biblioteca de baixo-nível que foi desenvolvida inicialmente pela Silicon Graphis Inc. que possui diversas rotinas gráficas para utilização em ambientes 2D e 3D, possuindo alto desempenho e fácil portabilidade. Por suas características, a OpenGL não contém funções específicas para gerenciar janelas, utilizar arquivos de entrada/saída e interagir com o usuário, uma vez que tais funções estão presentes no ambiente do Sistema Operacional. Ela permite a utilização de figuras primitivas (linhas, triângulos, cubos, polígonos, etc) e efeitos como mapeamento de texturas, iluminação, transparência e colorização para o desenvolvimento de ferramentas CAD, mundos virtuais, animações e cenas em uma aplicação. Ela é baseada em fundamentos matemáticos, possuindo um sistema de coordenadas 3D (Eixos X, Y e Z). Ao utilizar a OpenGL o desenvolvedor define as dimensões do ambiente virtual 3D, bem como o ponto de vista da cena. Com relação aos objetos que serão utilizados na cena, uma vez que a OpenGL suporta apenas as formas primitivas citadas anteriormente, se o objetivo do desenvolvedor for desenhar uma esfera, que é um objeto gráfico mais complexo, o mesmo poderá utilizar vários polígonos em conjunto, como triângulos, tornando a esfera praticamente perfeita. Esta regra também é valida para qualquer desenho de alto nível com a OpenGL.
Os comandos e subframeworks
Ao desenhar utilizando diretamente a OpenGL, o desenvolvedor informa o início e o fim de um determinado desenho através dos comandos glBegin() e glEnd(). Com relação aos nomes das funções da OpenGL, existe um padrão para facilitar na utilização da mesma.
Normalmente os nomes das funções são constituídos pelo prefixo gl, que representa a própria biblioteca, a descrição da função ao centro e um sufixo, que indica que a função precisa de determinado número de parâmetros, bem como seus tipos. Sendo assim, as funções são compostas por gl-[descrição]-[quantidade-argumentos]-[tipo-argumentos].
A OpenGL também é constituída por uma série de variáveis de estado que indicam os estilos, as posições, os tipos de luzes, entre outros atributos que podem ser alterados. Tal alteração pode ser executada através dos comandos ...