DirectX e OpenGL: a guerra das APIs 3D
Publicado em 08/09/2009 – 15:32por Carlos Morimoto
Diferente dos processadores, que utilizam um conjunto comum de instruções (o x86), os chipsets de vídeo são regidos por uma certa anarquia, onde não existe uma interface padrão, especialmente entre chipsets de diferentes fabricantes.
Na época do MS-DOS, os jogos acessavam diretamente o frame-buffer e os demais recursos da placa de vídeo. Embora isso permitisse extrair o máximo de desempenho das placas limitadas da época, aumentava muito o trabalho dos programadores, que precisavam escrever rotinas separadas para cada modelo de placa disponível. Funcionava enquanto os jogos utilizavam gráficos 2D simples (como no caso do antigo Warcraft 2) e o número de placas diferentes era relativamente pequeno, mas se tornou inviável a partir do início da era 3D, devido à complexidade do trabalho e às diferenças de arquitetura entre os diferentes chipsets.
Surgiram então as 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. Passou então a ser responsabilidade dos fabricantes tornarem seus chipsets compatíveis com as APIs existentes e disponibilizar drivers, assegurando que os títulos existentes rodarão com um bom desempenho.
De certa forma, uma API lembra bastante uma linguagem de programação de alto nível, como o C++, onde você desenvolve os aplicativos usando as funções disponíveis e deixa que o compilador se encarregue de gerar o código de máquina que será executado pelo processador.
As funções disponíveis determinam diretamente o que é possível fazer, o que transforma a API em um potencial gargalo: uma API deficiente ou desatualizada pode limitar severamente o desenvolvimento, bloqueando o acesso a recursos disponíveis na GPU. Assim como tudo na informática, as APIs evoluem, incorporando novas funções e se moldando aos chipsets 3D existentes, mantendo a corrida de gato e rato.
A primeira API 3D para jogos a se tornar popular em jogos foi o Glide, criado pela antiga 3dfx para uso em suas próprias placas. Ele surgiu como uma versão reduzida do OpenGL, otimizada para a criação de gráficos em tempo real, cujas funções eram implementadas diretamente no hardware das placas. Essa abordagem tinha suas limitações (não era possível incluir novas funções sem modificar os chipsets e não era possível corrigir bugs ou atualizar as placas já disponíveis) mas ofereceria ganhos significativos de desempenho.
A combinação da API fácil de usar e do bom desempenho permitiu que a Voodoo (lançada em 1996) e a Voodoo 2 (1998) dominassem rapidamente o mercado, praticamente inventando o ramo das aceleradoras 3D para jogos.
Na época, a maioria dos jogos (Need for Speed II SE, Carmageddon, Tomb Raider, Virtua Fighter II, Resident Evil, MechWarrior, etc., etc. :) podiam rodar também em modo de renderização via software (sem uma aceleradora 3D), mas nesse caso o desempenho era limitado e os gráficos ficavam muito mais simples. Temos aqui um screenshot do Need for Speed II SE, com aceleração em Glide:

O Glide era uma solução bastante elegante, que permitia criar jogos facilmente portáveis para outras plataformas. O lado negro era o fato de ele ser completamente fechado e proprietário, disponível apenas para as placas da própria 3dfx. Se ele tivesse prevalecido, a 3dfx teria um quase monopólio dos chipsets 3D, o que não seria uma boa coisa.
Embora tenha sido a API dominante nos primeiros anos, o Glide decaiu rapidamente entre 1998 e 2000 devido à queda de popularidade das placas da 3dfx, que passaram a perder mercado para as placas da Rendition, Matrox e S3, que logo deram lugar às placas da nVidia e da ATI.
Inicialmente, ambas tiveram dificuldades em concorrer com as placas da 3dfx devido à falta de suporte ao Glide, mas o uso de ciclos mais rápidos de desenvolvimento (sobretudo por parte da nVidia) combinados com preços mais competitivos e migrações mais rápidas para novas técnicas de fabricação acabaram fazendo a balança tender para o lado oposto. No final, a 3dfx acabou indo à falência, depois de vender parte da propriedade intelectual para a nVidia.
É possível rodar jogos antigos, que utilizam o Glide em placas atuais utilizando os glide-wrappers, que são emuladores destinados a processar as instruções via software (similar uma Voodoo com seus 50 megapixels de throroughput não é problema para um processador atual) ou convertê-las em chamadas OpenGL. Dois bons exemplos são o OpenGlide e o dgVoodo.
Com o Glide saindo de cena, foi aberto o caminho para o domínio do OpenGL e do Direct3D, dando início à era moderna. 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. Entre elas, o Direct3D é a API específica para a geração de gráficos 3D.
O OpenGL é na verdade bem mais antigo que o Glide, em uma história que remonta às estações de trabalho da década de 1980. Ele surgiu oficialmente em 1992 quando, pressionada pelos concorrentes, a SGI decidiu criar uma API aberta com base no IrisGL, usado em suas estações de trabalho. Embora o objetivo inicial fosse o uso em aplicativos profissionais de CAD e renderização 3D, o OpenGL logo passou a ser usado também em jogos, com os fabricantes de chipsets e placas 3D se esforçando para adicionar o suporte a ele em seus chipsets. Como comentei, o próprio Glide surgiu como uma versão reduzida do OpenGL, implementada via hardware.
Além do fato de ser um padrão aberto, desenvolvido por uma associação de fabricantes, uma das principais vantagens é o fato de o OpenGL ser uma API multiplataforma, o que permite que os aplicativos e jogos sejam portados para o Linux e outras plataformas sem muita dificuldade.
Um bom 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 jogo para Linux, disponível para download. A lista inclui o Doom3, que foi um dos últimos grandes lançamentos baseados no OpenGL:

O Direct3D, por sua vez, surgiu em 1995 quando percebendo que os jogos 3D seriam o futuro, a Microsoft decidiu incorporar uma API 3D no DirectX. Nas primeiras versões, o Direct3D era visto como uma API limitada, que era usada mais devido a incentivos e subsídios por parte da Microsoft do que por méritos próprios. Entretanto, as coisas começaram a mudar a partir do DirectX 7.0, que atingiu uma quase paridade de recursos com o OpenGL, ao mesmo tempo em que oferecia ferramentas de desenvolvimento mais fáceis de usar. Com exceção da ID Software, que continuou leal ao OpenGL, a maioria das software houses começaram a debandar para o DirectX.
A tendência foi reforçada com o lançamento do DirectX 8.0 (lançado no final de 2000), que trouxe o suporte a shaders, e com o 8.1 (final de 2001), que trouxe várias melhorias na interface de desenvolvimento.
Inicialmente, os shaders são foram tão usados pelos desenvolvedores de jogos, em parte devido à falta de familiaridade com o conceito e em parte devido às limitações do DirectX 8 e das GPUs da época. Entretanto, a adoção cresceu rapidamente com o DirectX 9.0 (lançado em dezembro de 2002), que trouxe o suporte ao Shader Model 2.0 e se solidificou com o DirectX 9.0c (2004) e a inclusão do Shader Model 3.0, que se tornou a plataforma comum da maioria dos títulos lançados entre 2005 e 2009.
O OpenGL, por outro lado acabou ficando um longo tempo estagnado, com as inovações sendo introduzidas lentamente devido às divergências entre os membros do conselho. A própria SGI acabou saindo do mercado depois de ver suas estações de trabalho perderem espaço para placas das linhas Quadro FX da nVidia e FireGL/FirePro da ATI que, devido ao grande volume de produção das placas domésticas, são capazes de oferecer as soluções profissionais com preços muito mais competitivos.

A diferença entre estas placas e as GeForce/Radeon domésticas não estão tanto no hardware (a Quadro FX 5600 é baseada no mesmo G80 que equipa a GeForce 8800 doméstica, a FirePro V8700 usa o mesmo RV770 da Radeon HD 4870 e assim por diante), mas sim nos drivers. Eles são desenvolvidos de forma independente dos drivers domésticos, passando pelos processos oficiais de certificação e ganhando otimizações que resultam em um desempenho consideravelmente superior em aplicativos profissionais, como o Maya, 3ds Max, AutoCAD, SolidWorks, ProEngineer, etc. O preço inclui também um plano de suporte, geralmente válido por um ano.
Voltando ao OpenGL, em 2007 a manutenção foi transferida para o Khronos Group e o anúncio do OpenGL 3.0 renovou as esperanças em torno de uma renovação. Entretanto, as melhorias relacionadas ao desenvolvimento de jogos foram gradualmente perdendo espaço ao longo do caminho, fazendo com que o OpenGL 3.0 acabasse trazendo apenas melhorias relacionadas ao uso em estações de trabalho, que passaram a ser o principal reduto da API.
Nesse ponto, o fato de o DirectX ser controlado pela Microsoft acabou se revelando uma vantagem, já que as decisões podiam ser tomadas mais rapidamente. O Direct3D é uma API destinada a jogos, que é otimizado para o uso em placas de dois fabricantes (nVidia e ATI), enquanto o OpenGL tem um escopo muito mais abrangente e uma carga de legado muito maior, o que torna a concorrência mais difícil.
Isso permitiu que a Microsoft desenvolvesse um quase monopólio dos jogos para PCs, com quase todos os títulos sendo lançados exclusivamente em versão Windows (o único sistema capaz de rodar nativamente o DirectX) e apenas alguns ganhando versões para MacOS X ou Linux. É possível também rodar jogos DirectX no Linux através do Wine e do CrossOver, mas neste caso a compatibilidade é limitada e existe quase sempre uma perda considerável de desempenho.
Continuando, cada nova versão do DirectX oferece mais chamadas e novos recursos de desenvolvimento, que possibilitam a criação de efeitos mais complexos e permitem acessar os recursos oferecidos pelas GPUs mais atuais, mas por outro lado quebram a compatibilidade com GPUs antigas, criando uma espécie de obsolência programada.
Um dos principais fatores é o Shader Model, a API responsável pelo uso dos shaders, que tem se tornado um dos principais fatores relacionado à qualidade das imagens e efeitos. 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, que é diretamente otimizado para as unidades programáveis das placas atuais.
Com isso, a versão do DirectX suportada pela placa tornou-se uma especificação importante (sobretudo no caso das placas onboard, que são quase sempre baseadas em chipsets antigos), já que está diretamente relacionada com a compatibilidade da placa com os jogos atuais.
Placas como as GeForce 5 FX, GeForce 6 e GeForce 7 e as ATI baseadas nos chipsets das famílias R300, R400 e R500 são limitadas aos títulos com suporte ao DirectX 9, enquanto as placas da série GeForce 8xxx (NV80) e as Radeon HD 2xxx (R600) em diante oferecem suporte ao DirectX 10, o que garante efeitos extras em muitos títulos atuais e a compatibilidade com pelo menos mais uma geração de jogos. As placas onboard com chipset Intel GMA X3000 também suportam o DirectX 10 no papel, mas na prática o desempenho é muito fraco.
A versão do DirectX usada pelos jogos não é uma decisão encravada em pedra. Os desenvolvedores podem optar por focar o desenvolvimento em uma versão específica (o DirectX 9.0c, por exemplo) e incluir camadas de funções que utilizem recursos do DirectX 10 ou DirectX 11 (ativadas apenas nos PCs compatíveis), ou mesmo funções adicionais para manter a compatibilidade com versões antigas. Ao ser executado, o jogo detecta quais são as versões suportadas pelo placa e ativa automaticamente as funções apropriadas, variando o nível de detalhes de acordo com os recursos do hardware.
Em pleno final de 2009 ainda temos uma predominância de jogos desenvolvidos primariamente para o DirectX 9, contra um número pequeno de títulos desenvolvidos exclusivamente para o DirectX 10, diferente do que tivemos nas versões anteriores, onde a migração foi muito mais rápida.
Existem vários motivos para isso. Um dos principais foi a decisão da Microsoft de amarrar o DirectX 10 ao Vista, esperando por uma rápida adoção do sistema, que no final não aconteceu. Ao olharem os números de usuários do XP e do Vista, os desenvolvedores chegavam à conclusão de que era melhor continuar desenvolvendo primariamente para o DirectX 9, adicionando apenas uma camada posterior de efeitos baseados no DirectX 10, que passavam longe de serem convincentes.
Outro motivo é a predominância de títulos portados, que são desenvolvidos primariamente para o Xbox 360 ou o PS3 e em seguida portados para os PCs. O Xbox 360 usa uma API baseada no DirectX 9, o que torna natural que ele seja utilizado também nos portes para PC. Com uma base cada vez mais fragmentada, o desenvolvimento de títulos para várias plataformas utilizando uma base de código comum se tornou norma.
Um bom exemplo é o Call of Duty World at War, que apesar dos bons gráficos, é um título DirectX 9, que foi portado sem muitas modificações dos consoles para o PC:

Essa dependência dos consoles é um fator que tem retardado a adoção de novas tecnologias, já que os consoles possuem configurações muito mais modestas que um PC high-end são atualizados em um ritmo muito mais lento. Por um lado isso é bom, já que torna os desenvolvedores mais conservadores com relação ao uso de recursos (reduzindo a velocidade com que novas GPUs se tornam obsoletas), mas por outro lado atrapalha os sonhos de quem quer ver imagens fotorealísticas em jogos.
Hoje em dia, é possível renderizar imagens bastante realísticas com o OpenGL, usando uma combinação do ray-tracing, photon mapping e outras técnicas (como na imagem a seguir). O problema é que isso torna a renderização muito cara em termos de processamento, fazendo com que cada imagem demore vários minutos, ou mesmo horas para ser renderizada, muito longe dos 30 a 60 FPS que são esperados em jogos, onde são necessários algoritmos menos precisos, porém mais rápidos.

Isso explica grande parte do hype em torno do DirectX 11, que além de ser suportado pelo Windows 7 e Vista, será utilizado pela próxima geração de consoles. Não vai ser uma migração rápida (já que depende de os usuários migrarem para o Windows 7 ou Vista e atualizarem as GPUs), mas ele tem tudo para se tornar a próxima grande versão da API, finalmente substituindo o DirectX 9.
Do ponto de vista dos desenvolvedores, um dos grandes atrativos é o fato de o DX 11 ser um superset das instruções disponíveis no DX 10, que simplesmente inclui novas funções, sem abandonar as funções disponíveis anteriormente. Isso permite uma migração mais suave, já que ao deixar de usar as novas funções é possível escrever código compatível com as duas versões, assegurando a compatibilidade com a grande base de placas compatíveis com o DirectX 10.
Naturalmente, novos recursos e melhores gráficos consomem mais processamento, o que torna necessário o uso de placas mais poderosas, recomeçando o ciclo. Se você ainda tem dúvidas sobre para onde vai todo o poder de processamento das GPUs atuais, basta ter em mente que o DirectX 11 introduz o suporte de texturas de até 16.384 x 16.384, expandindo o antigo limite de 4096 x 4096, que já era impensável a poucos anos atrás.
Se você parar por um momento para pensar sobre o poder de processamento necessário para processar cenas com texturas desse tamanho em tempo real, vai logo entender os motivos da corrida armamentista entre a nVidia, ATI e Intel: no fundo tudo se resume ao uso de mais polígonos, texturas maiores e efeitos mas realistas. :)



44 respostas para “DirectX e OpenGL: a guerra das APIs 3D”
A BioWare também usava o OpenGL, mas migrou para Directx devido ao ganho geral nos jogos, os mais novos, infelizmente, não tem mais suporte a Linux e pelo que li na época da divulgação das especificações do OpenGL3 leva tudo a crer que sobrarão bem poucos produtores de games (menos ainda :-S) que usarão a API. Uma pena (para quem usa Linux, claro).
Ainda bem que Neverwinter Nights 1 ainda é OpenGL e garante uma diversão ocasional, mesmo sendo velho.
Me parece que o PS3 usa a OpenGL ES: http://www.opengl.org/news/sony_confirms_playstation_3_to_use_opengl_es/
Já que a OpenGL está caindo em desuso, existem duas saídas, que podem ser combinadas:
1) Criar um conjunto de APIs em código aberto que interpretem as APIs do DirectX e OpenGL.
2) Continuar aperfeiçoando o Wine para melhorar sua performance quanto ao DirectX.
Bons tempos da Vodoo…
Eu sempre gostei do Glide. No Unreal(1), as diferenças eram absurdas!
Realmente uma pena que a 3dfx tivesse uma mentalidade tão fechada na época…Se tivesse aberto o padrão, seriam os reis!
Teríamos ótimos jogos em Linux hoje em dia…
Mais uma vez a CORRUPÇÃO Microsoft presente. Tb boa parte dela atrelada a burrice da maioria ("dependem" do Windows, etc, etc).
Não é corrupção, é apenas visão de mercado.
Qualquer empresa poderia(pode) facilitar o trabalho de desenvolvedores para a sua plataforma, isso não é ilegal, nem monopólio.
As softhouses são livres para produzir em qualquer API, mas preferem a da microsoft pela facilidade e segurança de uma empresa seria e centralizada que "preza" pelos programadores e desenvolvedores mais que tudo.
Apenas estrategia de mercado, quando isso for ilegal estamos numa ditadura.
Um exemplo disso é a SONY, que mesmo sendo "novata" na época, se tornou lider no mercado de consoles pela mesma estratégia de "facilitar a vida" das softhouses, agilizando de forma inédita o licenciamento do seu hardware.
Olha, que texto fantástico!!!!!!!! A muito tempo eu queria entender (detalhadamente) o que acontecia em relação aos jogos no Linux, pois é a única coisa que me impede de ter um desktop só com o Linux…
Sabemos que o texto não se propõe a dar uma solução para o Linux, mas foi a impressão que me deu e também dos outros leitores (pelo que vi de seus comentários)… Qual seria a solução para o Linux? Não poderíamos adotar o DirectX???
Quero viver livreeeeeeeeeeeeeeeeeeeeee ter opções… quando isso será possível? Será possível?
> Qual seria a solução para o Linux? Não poderíamos adotar o DirectX???
Jogos para Linux só vai ter uma "solução" quando tiver uma porção considerável de usuários. Daí sim as produtoras de jogos vão achar conveniente investir no OpenGL ou numa versão nativa do DirectX para o Linux. Quem sabe daí uma empresa decida "adotar" o OpenGL e melhorá-lo?
Enquanto isso, a solução é comprar uma placa de vídeo um pouco melhor e usar o Wine. Para isso você pode usar parte do dinheiro que você (teoricamente) gastaria no Windows (imagine que placa você pode comprar com R$500 a mais!!! :)
DirectX é da Microsoft, eles precisariam liberar código fonte, não? Ou pelo menos a gente pagar um possível serviço. Mas duvido muito que a Microsoft vá vender um serviço para usuários Linux aUHHAUAHHUA.
> DirectX é da Microsoft, eles precisariam liberar código fonte, não?
Acredito que nada impede uma empresa X fazer uma versão do DirectX nativa para Linux, da mesma forma que o Wine faz usando o OpenGL, mas posso estar errado.
devemos lembrar também do outro lado do mercado, nós consumidores.
Assim como a não migração XP-Vista segurou o DX9, os usuários do Linux poderiam estar fazendo barulho mostrando o "mercado perdido do Linux".
Infelizmente, no momento, não acredito que seja um mercado atrativo à nenhuma softhouse… Mas quem sabe no futuro.
Ainda temos que considerar a nova onda de jogos para celulares e smartphones que não usam DX como o iphone da apple. Alias o iphone é mais um video game do que um telefone celular!!!
Ou mesmo jogos jogados diretamente nos navegadores ( que é o que meu filho de 4 anos só usa, como discoverykids e o site ojogos ).
Jogos em java e emuladores de fliperama… não são tão (nada) realísticos ou cheios de efeitos, mas são muito populares a ponto de merecerem um artigo!
Wine definitivamente não é "A" solução para jogos no Linux… é só tentar jogar, ou mesmo ler o texto para perceber isso…
Será que não tem ninguém que vai fazer uma engenharia reversa pra produzir um DirectX pra Linux? Assim como foi feito no caso de cópias do DVD?
> Wine definitivamente não é "A" solução para jogos no Linux…
Eu me dou muito bem com o Wine ;)
> Será que não tem ninguém que vai fazer uma engenharia reversa pra produzir um DirectX pra Linux
O Wine de certa forma já faz isso, mas tem que ter todo um procedimento para não ter problemas legais com isso (porque nenhuma parte do código pode ser copiada, deve-se apenas ter as mesmas funções). Só que o Wine usa o opengl como backend ao invés de usar diretamente o driver da placa.
Não tem como evitar, ou forçamos a barra pra popularizar o Linux e o OpenGL ou ficaremos sem jogos, se bem que a Sony continua adotando o openGL, acredito que seja a única API presente para o Mac também. Ouvi dizer que o OGL 3.1 seria uma excelente responta ao directX, será verdade?
Essa realmente é uma frustração pra mim , saber que se eu quiser jogar os melhores jogos em pc , terei que usar windows, e não adianta ser em maquina virtual tem que ter uma partição mesmo, o que realmente não entendo pois é que parece ter uma grande quantidade de clientes para estes jogos em Linux, mas as empresas ainda assim tem receio de investir nesta estratégia, uma vez perguntei a um cara diretor em uma empresa de produção de games , pq ele não fazia jogos para Linux também , e o maluco me respondeu que era pq se ele fizesse isso teria que abrir o código do jogo :0
Um assunto um pouco diferente agora, Carlos é uma pena que não tenha mais publicados aqueles posts onde ensinava alguns conceitos básicos de programação, eram bastante interessantes.
Eu não vejo muita possibilidade de alguma mudança com relação ao lançamento de jogos para Linux nos próximos anos, pois o próprio mercado de jogos para PCs está se tornando um mercado secundário, perdendo espaço para os consoles, que é onde está o dinheiro hoje em dia.
Um dos motivos do uso do DirectX é justamente o fato de ele possuir ferramentas mais simples de desenvolvimento e ser muito similar à API do Xbox, o que reduz o custo de desenvolvimento e porte dos jogos, permitindo que as software houses fechem as contas. Tendo isso em mente, é bem difícil imaginar que tenhamos o lançamento de grandes títulos em versão nativa para Linux, pois o público é bem menor. O porte dos jogos para Linux funcionava no caso da ID, que desenvolvia em OpenGL e conseguiu desenvolver um sistema rápido para o porte entre as duas plataformas, mas é bem mais complicado no caso de empresas que opetaram pelo DirectX e teriam que fazer um longo e caro processo de conversão.
A solução com mais possibilidades de sucesso seria o Wine, que permitiria obter compatibilidade com a maior parte dos titulos no mercado sem depender das software houses. O problema no caso dele é que o desenvolvimento é demorado e o projeto não tem recebido muito apoio ultimamente.
O caso do DirectX ter "vencido a briga" não foi por monopólio ou coisa parecida, foi realmente pela qualidade da API e facilidade de programação, eu uso linux e gosto do linux, não dependo do windows para nada(pelo menos não por agora), mas o fato é que realmente a Microsoft acertou, temos que ter cuidado ao falar certas coisas, ela tem os seus méritos sim!
Essa questão de facilidade para as SoftwareHouses é decisivo, pois tempo de desenvolvimento é dinheiro, um exemplo excelente que foi dado foi o Playstation, o Hardware do Saturn na época era até superior em alguns pontos, mas se as pessoas quisessem programar em 3D teriam que fazer todas as funções disponíveis, enquanto no PSX muita coisa a própria API do console se encarregava de fazer muita coisa.
"Eu me dou muito bem com o Wine ;)"
Gustavo, se o wine conseguir rodar GTA IV de modo aceitável nos próximos 10 anos eu deixo de jogar no Windows.
Pra mim a solução é fazer engenharia reversa, e fazer com que a instalação de jogos no Linux se dê da mesma forma que no Windows… (o que acho difícil de acontecer)
Ou então a comunidade desenvolver um concorrente para o directx, que seja fácil de usar e voltado para games, diferente do OpenGL que não tem foco em jogos.
Outra coisa que falta para as distros voltadas a desktop, seria um instalador em modo gráfico que funcionasse em qualquer distro, temos os gerenciadores de pacotes… mas quando um programa é feito, tem que ser empacotado em todos os gerenciadores, para ser compatível com qualquer distro… ou então instalado em modo de compilação.
> Gustavo, se o wine conseguir rodar GTA IV de modo aceitável nos próximos 10 anos eu deixo de jogar no Windows.
Bem, de fato, tem jogos que não funcionam. Sua sorte com o wine depende muito dos jogos que você pretende jogar com ele ;)
Talvez a esperança seja o OpenCL, padrão aberto, criado pela Apple e adotado pela Intel, Nvidia e AMD.
http://en.wikipedia.org/wiki/OpenCL
Isso seria uma ótima notícia Raimundo, pois sabemos que o MacOS X é baseado em BSD, imagino que portá-lo para Linux não seja difícil.
Mas esse OpenCL é voltado para jogos? Historicamente a Apple é dedicada a parte gráfica, mas não para jogos. Seria fantástico ter um concorrente de peso para o DirectX que pudesse ser portado para outros sistemas nativamente.
Agora Gustavo, o Wine quebra um galho, talvez pra vc que não é um "Gamer" mas para mim que sou, e alguns que são Gamers Hardcore o Wine não presta pra nada. Não preciso de Microsoft Office no Wine, isso é lixo, uso apenas o OOo em casa e no trabalho, não preciso de Photoshop rodando no Wine (??? e roda ???) uso o Gimp, não preciso de Nero no wine, uso o K3b, agora infelizmente não existe algo compatível ou que possa rodar via Wine no Linux como Lineage, como GTA IV, como Company of Heroes… por isso me sinto usurpado… não critico a Micro$oft, afinal ganho dinheiro dando suporte ao sistema deles, o que eu não quero é viver amarrado a um sistema só, a uma licensa de mil reais, quero ter liberdade de jogar meus jogos -- assim como já faço com outras aplicações -- no sistema em que eu escolher, e não no qual sou forçado.
Só pra deixar claro, T-O-D-O software que uso na minha máquina é legal, inclusive o sitema 64bit´s da microsoft… em dual boot com o Ubuntu…
> Agora Gustavo, o Wine quebra um galho, talvez pra vc que não é um "Gamer" mas para mim que sou, e alguns que são Gamers Hardcore o Wine não presta pra nada.
Talvez eu não seja um Gamer Hardcore de acordo com a sua qualificação, mas jogo bastante, sim, de acordo com minha disponibilidade de tempo. Já joguei Half-life 2, incluindo EP1 e EP2, Team Fortress 2, Call of Duty 1 e 4 (pro 4 eu precisei instalar o no-cd crack, mas o meu é original) e SWAT 4, entre outros jogos "menores", usando o Wine, com alguma perda de desempenho, mas nada que me impedisse. O próximo na lista é o CoD 5 (vou comprar daqui a um mês ou dois -- espero que pegue com aqueles hacks que tem no site do winehq, senão eu vou ter que apelar ;).
É de fato uma pena que GTA 4 não funcione, é um jogo muito legal (já joguei uma vez pelo Play2).
> Só pra deixar claro, T-O-D-O software que uso na minha máquina é legal
Se o CoD 5 pegar, eu vou poder dizer o mesmo :)
Excelente leitura, parabéns pelo texto!
O VirtualBox 3 começou a ensaiar um suporte ao DirectX. Eu testei e funcionou, ainda que com algumas falhas. Para quem tem muita RAM, pode ser uma alternativa interessante.
Eu sou meio "velhaco" com jogos, curto mais os jogos antigos. Nesse sentido, o Wine tem me servido muitíssimo bem. Volta e meia compro jogos pelo Steam ou pelo Good Old Games, e eles funcionam numa boa via Wine. Outros, como Phantasy Star Online, também rodam direitinho. Com jogos mais recentes eu já não sei, mas talvez seja interessante começar a usar o VirtualBox para tentar rodá-los.
Um detalhe pro amigo Gustavo: GTA4 nao tem pra ps2, apenas ps3 e xbox360
Para Roberto Bechtlufft.
Roberto, é legal a iniciativa da sun, colocar suporte a directX no Virtual box… mas pense comigo, já que teoricamente vc vai pagar uma pequena fortuna pra rodar o sistema da Micro$oft, por que fazer isso em máquina virual capando o sistema?
Na minha opinião, se é pra pagar licensa, e rodar em VM prefiro mil veses fazer um dual boot (é claro que estou falando de desktops, eu sei muito bem a utilidade de servidores com VM).
Sem contar que o suporte a directx tanto no VMware quanto no Virtualbox são provenientes de código do wine. No fim todos eles convertem chamadas D3D em OGL…
a questão é que eu tenho uma duvida ainda, devido a ati e a nvidia estarem travando boas brigas pelo mercado..
a questão é a ATI adota nas placas + recentes o directx 10.1, a minha duvida seria, se 1 jogo é desenvolvido para directx 10, e eu estou usando 1 placa com directx 10.1, essa placa rodaria normalmente no directx 10?, só acionaria o directx 10.1 quando realmente o titulo fosse compativel com o mesmo, assim disponibilizando novos efeitos e etc..?
+ as placas com directx 10.1 rodam com um bom desempenho no directx 10? no caso então o directx 10.1 só adiciona alguns efeitos correto? + trabalha como se fosse nativamente no 10?
um directx digamos que uma mistura entre 9 e 10, algo parecido com o 11… e o ps3 usa opengl 2.0, no futuro poderá chegar ao 2.1, e o 3.0, só com adaptações de hardware… o ps3 tem uma boa cpu, mas não uma gpu… o x é uma cpu quase identica a CELL, só com quatro núcleos a menos (sendo que um é utilizado para o s.o, o os outros tres, com o objetivo de "reparar" a RSX) e o Xenos é sim mais potente que o RSX… é tudo a mesma coisa… (desempenho geral)assim como directx e opengl…
O directx é melhor que opengl, (em termos de qualidade e desempenho EM JOGOS, PORQUE FOI DESIGNADA PARA TAL..), o x tem
"""não critico a Micro$oft, afinal ganho dinheiro dando suporte ao sistema deles, o que eu não quero é viver amarrado a um sistema só, a uma licensa de mil reais, quero ter liberdade de jogar meus jogos — assim como já faço com outras aplicações — no sistema em que eu escolher, e não no qual sou forçado."""
Os programadores escolheram programar para Windows, se não quer pagar uma "licença de mil reais" não jogue, simples assim, fique com a ID Software e outros jogos para linux, o que acho uma hipocrisia é usar o wine, se lançassem algo "somente para linux/mac" acharia uma hipocrisia e algo totalmente imoral e sujo usar um MOD para rodar no windows.
Um roubo em toda a dificuldade que a microsoft teve de desenvolver API cada vez melhores, um SO que rode facilmente binários e dando suporte ativo para desenvolvedores, um simples roubo "portar" um jogo depois de toda essa dificuldade.
Pode não ser ilegal usar wine, mas que é algo imoral, hipócrita e nojento, isso é.
"Um roubo em toda a dificuldade que a microsoft teve de desenvolver API cada vez melhores, um SO que rode facilmente binários e dando suporte ativo para desenvolvedores, um simples roubo "portar" um jogo depois de toda essa dificuldade.
Pode não ser ilegal usar wine, mas que é algo imoral, hipócrita e nojento, isso é."
Então você considera também todo o port e gambiarras feitas pela MS para rodar programas "UNIX only" no Windows 7 algo sujo, deploravel e passivel de fogueira?
Nem vou falar das empresas, como o Google, que usam a libwine para portar seuas proprias aplicações e não precisar de retrabalho.
Não concordo que usar Wine é algo imoral, hipócrita…
Como muitos sabem o software foi desenvolvido baseado em Engenharia Reversa…. o Wine é um grande projeto, e quem deseja utilizar aplicativos dependente de chamadas de sistema Windows… tem um opção livra para isso, apenas isso.
A API DirectX tem seu méritos e como o próprio Morimoto disse, facilitar o desenvolvimento para o as Softwares Houses foi um fator que permitiu a grande utilização da API.
A mesa farta de jogos para Windows é uma realidade que ainda não é o caso do Linux…. não adianta reclamar, é fato, a GPU's seguindo a API DirectX (amarrada a MS) e o numero de usuário Linux em Desktop, ainda baixo perto do Windows….. isso são fatores que impulsionam desenvolvedores de jogos a continuar se importando apenas com a plataforma Windows. Olhando a estrategicamente o mercado de jogos, isso não é uma ação errada realizada pelos desenvolvedores de jogos.
nossa, idependemente da guerra do DirectX vs. OpenGL, estes comments estão cheios de fanboy's inclusive da Microsoft.
XBOX_PS_360 -- Nunca vi uma visão tão parcialista.
Aparte da participação baixa de mercado nos demais consoles, o OpenGL tem uma boa participação nos portateis, e Na área profissional. E O OpenGL recebe melhorias, assim como o DirectX. Vamos discutir funcionabilidade sem ser "baba-ovos".
ddragoonss
Seu comentário foi simplesmente ridículo.
Quanta informação, amei. Obrigado por compartilhar!
:D
O Wine pode não ser a solução definitiva para a questão do jogos em directx, mas no momento é tudo q temos. eu acho ridiculo quem fala mal do projeto wine, a equipe do wine fizeram um trabalho quase impossível em mais de 15 anos só pra fazer esse software maravilhoso para os SOs tipo Unix. claro que eu acho ridiculo instalar programas do windows que existem versoes correspondentes no linux tipo office, acrobat, live messenger. nesse caso eu concordo, mas no mundo windows nao sao todos softwares que são proprietarios e na questão dos jogos é uma mão na roda contra o monopólio da microsoft nos jogos. se o wine recebesse mais apoio tenho certeza que jogos tais como GTA IV ja estariam rodando sem muitos problemas. mas o povo é assim mesmo, só sabem falar mal e criticar. ajudar que é bom nada…
precisam conhecer o poder do openGl meu pc esta atualizado com dx10 sempre curti o unreal tour 2004 versão windows i Linux acreditem em OpenGL os games fuem merlhor e com frames aos 60 e não dar uma travadinha se quer estou pouco me inportando pois a M$ já esta perdendo para o linux em 70% em caso de servidores corporativos no brasil então nem se fala o Linux esta dominando bem e o futuro vai ser OpenGl pois façam o teste em qualquer programa tipo 3dmark e veja como o OPen gl bate facim no dx10 e no futuro dx11…