DirectX e OpenGL

Antigamente (na época do MS-DOS), os jogos acessavam diretamente os recursos da placa de vídeo. Isso obrigava os desenvolvedores a criarem rotinas separadas para o uso de cada tipo de placa disponível, o que dificultava o desenvolvimento e limitava os recursos que podiam ser utilizados. E olhe que ainda estamos falando de jogos 2D simples, como, por exemplo, o antigo Warcraft 2.

Criar jogos 3D manipulando diretamente os recursos do hardware seria inviável, devido à complexidade do trabalho. Surgiram então APIs para a criação de gráficos 3D, que facilitam o trabalho do desenvolvedor, oferecendo um conjunto de comandos e recursos padronizados, que podem ser usados em qualquer placa 3D compatível. Passa então a ser responsabilidade do fabricante tornar sua placa compatível com as APIs existentes e disponibilizar drivers.

A primeira API 3D proeminente foi o Glide, que era suportado apenas pelas antigas placas da linha Voodoo, da 3dfx. É possível rodar jogos antigos, que utilizam o Glide em placas da nVidia ou da ATI utilizando programas conversores, os glide-wrappers, que são integrados aos drivers. Eles eram importantes no final da década de 1990, mas são irrelevantes hoje em dia, já que o uso do Glide foi a muito abandonado. Atualmente, temos a predominância de duas APIs: o Direct 3D (que faz parte do DirectX) e o OpenGL.

A grande vantagem do OpenGL é que ele é um padrão aberto e multiplataforma, o que permite que os jogos sejam portados para o Linux e outras plataformas sem uma grande dificuldade. Um exemplo são os jogos da ID Software, que possuem todos versão Linux. Neles, a instalação é feita usando os mesmos CDs da versão Windows, você precisa apenas baixar o executável do game para Linux, disponível para download. É possível também rodar jogos DirectX no Linux, através do Cedega (disponível no http://transgaming.com) ou do Wine, mas neste caso a compatibilidade é limitada e existe sempre uma pequena perda de desempenho.

O OpenGL é muito usado também em aplicativos profissionais. Existem inclusive linhas de placas 3D destinadas a uso profissional, como as nVidia Quadro, que oferecem otimizações diversas e drivers OpenGL certificados.

O Direct3D, por sua vez, é a API mais usada em jogos. O Direct3D faz parte do DirectX, que é, na verdade, um conjunto de APIs, cada uma com uma função específica relacionada a multimídia. O Direct3D é a API específica para a geração de gráficos 3D.

Como tudo na informática, o DirectX foi evoluindo e incorporando novas funções desde sua introdução, no final de 1995. Com o passar do tempo, os desenvolvedores de jogos passaram a incluir suporte às novas versões e a lentamente abandonar o suporte às versões antigas. Como as novas versões do DirectX exigem, quase sempre, modificações não apenas nos softwares, mas também nas placas 3D, a versão do DirectX suportada pela placa tornou-se uma especificação importante, já que está diretamente relacionada com a compatibilidade da placa com os jogos atuais.

O DirectX 9 é suportado pelas placas nVidia da série GeForce FX, GeForce 6 e GeForce 7 e pelas placas ATI baseadas nos chipsets das famílias R300, R400 e R500, enquanto o DirectX 10 é suportado pelas placas da série GeForce 8 e pelas baseadas no chipset ATI R600 (e derivados). As placas onboard com chipset Intel GMA X3000 também suportam o DiretX10, embora o desempenho seja fraco.

Atualmente (final de 2007) a adoção do DirectX 10 ainda está engatinhando e todos os jogos que já utilizam a nova API conservam a compatibilidade com o DirectX 9, de forma a manter a compatibilidade com as placas antigas. De qualquer forma, a adoção tende a crescer nos próximos anos.

Existem muitos casos de jogos recentes que mantém compatibilidade com o DirectX 8, ou até mesmo com o DirectX 7. Isso é feito inserindo diferentes blocos de código dentro do aplicativo, que são utilizados de acordo com a versão disponível. Isso permite que o game rode mesmo em placas antigas (limitado ao desempenho da placa, naturalmente), mas sempre existem grandes diferenças de qualidade de imagem entre as diferentes versões do DirectX usadas.

Para complicar um pouco mais, existe ainda a questão das versões do Shader Model (a API responsável pelo uso dos shaders), outro fator relacionado à qualidade de imagem e à compatibilidade das placas. O DirectX 9.0 (lançado em 2002) inclui suporte ao Shader Model 2.0, o DirectX 9.0c (lançado em 2004) ao Shader Model 3.0, enquanto o DirectX 10 (lançado no início de 2007, juntamente com o Vista) oferece suporte ao Shader Model 4.0. Cada nova versão oferece mais recursos de programação, que possibilitam a criação de efeitos mais complexos (o que melhora a qualidade visual dos jogos), mas é necessário que exista compatibilidade por parte da placa de vídeo.

O grande problema do DirectX 10 é que ele é uma API quase que completamente nova, profundamente amarrada ao Windows Vista. Criar uma versão para o Windows XP não seria apenas contra os interesses comerciais da Microsoft (que deseja que os usuários migrem para o Vista o mais rápido possível), mas também muito difícil tecnicamente, de forma que é bastante improvável que isso venha a acontecer.

O Vista, por sua vez, é um sistema operacional muito mais complexo e mais pesado (sobretudo na questão do uso de memória), o que faz com que os jogos quase sempre rodem com um FPS mais baixo. Como o DirectX 10 implementa novos efeitos, a placa precisa realizar mais processamento para renderizar cada frame, o que resulta em uma redução ainda maior no FPS.

No final das contas, você acaba precisando de um hardware muito mais poderoso para rodar os mesmos jogos em modo DirectX 10, sobre o Vista (com uma qualidade visual um pouco melhor), do que para rodá-los em modo DirectX 9.0c sobre o XP, o que tem retardado a adoção do DirectX 10.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X