Artigos

APIs gráficas: Desmistificando o DirectX e OpenGL

sábado, 22 de agosto de 2009 visualizações: 1.667

Antigamente, para que uma aplicação gráfica pudesse demonstrar todos os seus atributos com qualidade e desempenho, a equipe de desenvolvimento precisava implementar procedimentos que fizessem com que o software conseguisse acessar diretamente o hardware, sem rotinas intermediárias. Isso acarretava em uma série de cuidados, visto que a qualidade do jogo e a compatibilidade com o hardware deveriam estar perfeitamente equilibradas. A “miscigenação” de equipamentos sempre foi o grande desafio dos programadores de jogos e aplicativos gráficos.

Como exemplo, imagine um turista italiano desembarcando em nosso país. Assim como pode encontrar pessoas que falem fluentemente o idioma oficial da Itália, também encontraria descendentes de imigrantes italianos que aprenderam diferentes dialetos, o que acarretaria em maiores dificuldades para se comunicarem. E, obviamente, teria que se comunicar com pessoas que falam português, cada uma com seu sotaque próprio, termos e gírias de suas respectivas regiões do país.

Essa dificuldade de comunicação pode ser comparada aos percalços que uma aplicação gráfica sofria antes de surgirem tecnologias padronizadas: ora perdiam desempenho, ora não eram compreendidas. Quais são os resultados disso? Erros diversos, perda de qualidade e velocidade, acarretando em uma péssima experiência para o usuário.

APIs – Application Programming Interface (Interface para Programação de Aplicativos)

As APIS são softwares que surgiram justamente para padronizar rotinas comuns, encapsulando em seu código serviços pré-definidos, os quais podem ser acessados por qualquer programa que necessite de aceleração gráfica. Com isso, os softwares já não necessitam uma implementação própria para acessar o hardware em questão (placas de vídeo, memórias, processador, etc.). Tendo uma API como “tradutora” entre o aplicativo e o hardware, as empresas desenvolvedoras já não se preocupam tanto com compatibilidade e rotinas triviais, focando seus esforços no desenvolvimento das aplicações gráficas (jogos, animações, editores de imagens, etc). Veja o exemplo simbólico abaixo:

api_retas

Exemplo de renderização gráfica sem a utilização de uma API

No exemplo acima, além de ser exigido 4 passos para que o software consiga desenhar um quadrado na tela, ainda teria que se preocupar como cada hardware iria implementá-lo. De forma figurativa foi apresentado que os hardwares usariam caminhos diferentes para obterem o mesmo resultado, e o aplicativo gráfico deveria conhecer as características de cada um.

Veja agora um exemplo onde seria implementado a mesma situação acima, mas com uma API gráfica:

api_quadrado

Exemplo de renderização gráfica utilizando recursos de uma API

Perceba que, independente do hardware, a API irá se comportar da mesma forma. Além disso, por possuir a rotina “quadrado” implementada, não é necessário desenhá-lo com retas, acarretando 1/4 de tempo que levaria para desenhá-lo sem a utilização do recurso disponível.

Atualmente podemos encontrar várias APIs destinadas exclusivamente a aplicações gráficas e multimídia. As mais conhecidas são o DirectX e o OpenGL.

DirectX

O DirectX é um poderoso conjunto de componentes desenvolvido pela Microsoft, cujo objetivo é o de possibilitar uma alta performance em aplicações multimídia, simplificando a comunicação entre o hardware de vídeo, som, dispositivos de entrada e rede. Atualmente, o DirectX é a tecnologia mais utilizada no desenvolvimento de jogos comerciais, e seu único ponto negativo consiste no fato de que sua distribuição (a qual é gratuita) é disponibilizada apenas para a plataforma Windows.

OpenGL

Semelhante ao DirectX, o OpenGL é uma biblioteca de APIs multiplataforma e open-source, disponível para o ambiente Windows, Linux, Solaris e MacOS. Seu único inconveniente é o fato de que presta suporte apenas à área gráfica, não abrangendo efeitos sonoros e dispositivos de entrada, tal como o DirectX. Em compensação, sua flexibilidade e portabilidade impressionam. Existem milhares de jogos no mercado que utilizam essa tecnologia.

Embora as supracitadas sejam amplamente difundidas, tanto por fabricantes de softwares quanto hardwares gráficos, existem várias outras APIs e bibliotecas destinadas a objetivos semelhantes. Allegro e SDL são exemplos de tecnologias alternativas, mas que podem inclusive utilizar o OpenGL para flexibilizar ainda mais seu trabalho.

Além disso, vale mencionar as APIs dos sistemas operacionais, que em termos de desempenho gráfico são bem inferiores às mencionadas. Isso porque a preocupação delas objetiva a maior compatibilidade possível com o sistema operacional (Windows, Linux, etc) e suas aplicações tradicionais, tais como suítes de escritório, dispositivos de entrada e saída (mouse, teclado, impressoras, por exemplo) e gerenciamento de arquivos.

diagrama_apis

Um adendo: Muita gente acredita que, somente atualizando a API no sistema operacional (ex: DirectX 9 para o 10), irá aproveitar os recursos disponibilizados pela nova versão. Pois bem, se a placa de vídeo possuir implementações somente até o DirectX 9, as diferenças não serão perceptíveis. Caso a situação se inverta (hardware mais atualizado que o software), o resultado seria o mesmo. Podemos exemplificar inclusive com a situação das retas e quadrados, mencionada anteriormente: se o software sabe fazer um quadrado, mas o hardware não, ele irá compatibilizar a ação, utilizando 4 retas para concluir seu objetivo – não trazendo qualquer modificação de desempenho/qualidade.

Espero ter sido claro suficientemente em minhas colocações, tendo alcançado meu objetivo de desmistificar um pouco sobre as tecnologias citadas. Quaisquer dúvidas, críticas ou sugestões, não deixem de perguntar.

Roberto Tadeu Fauri

Veja também:

Tags: , , , , ,

2 comentários »

  • domelhor.net diz:

    APIs grficas: Desmistificando o DirectX e OpenGL…

    Artigo que explica facilmente o que so e para que servem as APIs grficas, abordando de forma descomplicada as tecnologias DirectX e OpenGL….

  • Roberto via Rec6 diz:

    APIs gráficas: Desmistificando o DirectX e OpenGL…

    Artigo que explica facilmente o que são e para que servem as APIs gráficas, abordando de forma descomplicada as tecnologias DirectX e OpenGL….

Deixe seu comentário!

Adicione seu comentário, ou faça um trackback de seu próprio site. Você pode também inscrever-se via RSS.