Ir ao conteúdo
  • Cadastre-se

Pra Que Serve O Directx?


lucas[ID]

Posts recomendados

Ignorância nenhuma, eu mesmo utilizava ele mas não fazia nem ideia da real função do programa. Apenas sabia que era algo que melhorava as imagens. :(

Fui pesquisar e adivinha onde encontrei a resposta para essa pergunta? Aqui mesmo no Clube do Hardware. :palmas:

O DirectX é uma interface de programação desenvolvida pela Microsoft exclusivamente para jogos. Sua função é facilitar a comunicação do jogo com o hardware do micro: ao invés do jogo ter que conhecer todos os dispositivos do mercado -- como placas de vídeo 3D e placas de som -, ele passa a usar comandos do DirectX. O DirectX, por sua vez, faz a conversão dos comandos enviados pelo jogo para acessar o hardware específico, melhorando o desempenho e facilitando a programação do jogo, que passa a ser mais simples. :wow:

Ficou com dúvidas? Clube do Hardware resolve! :ahh:

Link para o comentário
Compartilhar em outros sites

Tudo começou na SGI...

Ela criou a IrisGL, que é muito avançada tecnologicamente falando, porém a SGI percebeu que o monopólio não era bom pra ela e decidiu fazer uma API mais simplificada para o uso "caseiro". Ela foi e pegou alguns "pedaços" da IrisGL e criou o OpenGL...

Nisso umas pessoas sairam da SGI e foram criar outras empresas, uns foram pra 3DFX, outros pra nVidia e etc...

Bom, agora você quer saber onde o DirectX entra nisso né?

Simples, ele é uma cópia de uns pedaços do OpenGL que a Microsoft registrou...

Resumindo: OpenGL é aberto, a Microsoft foi e copiou algumas partes do OpenGL, criou o DirectX e registrou ele :D

Depois disso, a Microsoft começou a colocar coisas amais no DirectX chamando elas de inovações, mas que na realidade não tem nada de muito inovador nisso hehe, aí como a Microsoft registrou o DirectX, ninguém pode ver como ele é feito então fica impossivel dele rodar em outra plataforma como exemplo o Linux.

Já o OpenGL é aberto, então se a nVidia vai e usa alguma tecnologia, ela tem que registrar no ABR da OpenGL e aí qualquer um pode usar, é por isso que na maioria das vezes, tanto ATI quanto nVidia possuem as mesmas tecnologias =]

Agora vocês me perguntam... Se o DirectX é pior porque ele é tão usado?

Simples, até um tempo atrás, a ATI e a nVidia não entravam em acordo para utilizar um padrão de uma tecnologia lá no OpenGL, aí caso um desenvolvedor de um jogo quisesse fazer o jogo em OpenGL ele iria ter que programar de um jeito para rodar nas placas da ATI e de outro jeito pra rodar nas placas da nVidia, e isso é ridiculo e preferiram programar só no DirectX mesmo e que se dane hehe, por isso ele ganhou popularidade nesses anos...

Até que a SGI e a 3dLabs entrou no meio dessa briga da ATI e da nVidia e aí eles "deram as mãos" e criaram um padrão...

Uma coisa legal do DirectX é o que vai sair na versão nova dele, 9.1 creio eu...

Ela vai ter um compilador próprio, fazendo com que antes do jogo ir pro processamento da placa, ele é recompilado para ser otimizado na placa, porque cada placa tem seu meio "preferido" de trabalho.

Seria mais ou menos assim num exemplo bem tosco:

A nVidia prefere ler uma cor, uma luz e uma textura, uma cor, uma luz e uma textura e assim por diante por exemplo.

Já a ATI prefere ler todas as cores, todas as luzes e depois todas as texturas.

E o compilador que costuma ser utilizado atualmente é o HLSL (ou algo assim), ele foi inicialmente desenvolvido pela ATI e depois mais tarde finalizado pela Microsoft, ou seja, ele foi feito jogando pro lado da ATI =]

Os códigos quando compilados ficam cheios de TEMPS inúteis e como todo mundo sabe, quanto mais temps, mais lento fica o processamento, mas tem um único processador que não fica lento com tantos TEMPS e sabem qual é?

Os R3XX da ATI, que coincidência né? uhahuahua =]

Bom, isso era um problema pra nVidia, para tentar "arrumar" isso, a nVidia colocou um compilador otimizado para ela mesma no seus novos drivers ForceWare, ele vai ler o jogo e no menor tempo possível tentar recompilar para ser otimizado para o "estilo nVidia" e nos jogos que eram "compilados para a ATI" a nVidia teve um ganho grande com esse compilador otimizado utilizado no driver, mas nos jogos que foram compilados "normais" o ganho foi nulo =]

Outra coisa que pode ser citada é que o OpenGL e o DirectX nas placas ATI e nVidia são executados de modos diferentes.

Na nVidia, o OpenGL fica no Hardware enquanto na ATI o DirectX é que fica no Hardware, e o DirectX na nVidia é via Software e o OpenGL na ATI é via Software, fazendo um rodar "em cima do outro" a grosso modo...

O Windows, para variar, tem um suporte muito tosco do OpenGL, um suporte "sabotado", assim como é feito no Java também, onde o Windows tem um suporte bugado do java... Tudo isso é o "Marketing" da Microsoft para "matar" seus concorrentes, já que ela não é boa o suficiente no pau a pau ela tem que partir para meios mais "sujos"...

Bom, acho que exagerei no tamanho do texto e ninguém vai ler tudo isso uauha =[

Link para o comentário
Compartilhar em outros sites

Ei li tudo! B) Muito bacana... aprendi boas aí...!!!

Uma placa que tem suporte nativo ao DX7 como as MX440... mas precisam jogar um Medal of Honor por ex que pede o DX8, esse DX8 faria o papel do hardware.. ensinando ao processador as funçoes DirectX 8 (nesse caso) para que voce tenha uma simulação dos efeitos...

(Se estiver enganado... me corrijam!) :bye:

Link para o comentário
Compartilhar em outros sites

pelo que eu andei lendo além do trabalho do directx na parte grafica ele pode ser usado para estender as instruções dos processadores como, mmx, sse, sse2, 3d-now e assim vai, ou seja, ele não só apenas age na execuçao grafica do jogo mais otimiza, som, video e calculos matematicos de execução tambem.

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por edurm@14 maio 2004, 18:00

pelo que eu andei lendo além do trabalho do directx na parte grafica ele pode ser usado para estender as instruções dos processadores como, mmx, sse, sse2, 3d-now e assim vai, ou seja, ele não só apenas age na execuçao grafica do jogo mais otimiza, som, video e calculos matematicos de execução tambem.

Também fornece uma interface de programação (API) pra programar os efeitos de som (Directsound/Directmusic), inserção/saída de dados - inslusive para jogos em rede (Directinput/Directplay), captura de audio e vídeo (Directshow) e para gráficos (Directdraw/Direct3D).

Vale ressaltar que o DirectX é usado por muitos outros aplicativos, e não só jogos.

Uma coisa legal do DirectX é o que vai sair na versão nova dele, 9.1 creio eu...

Ela vai ter um compilador próprio, fazendo com que antes do jogo ir pro processamento da placa, ele é recompilado para ser otimizado na placa, porque cada placa tem seu meio "preferido" de trabalho.

Isso só vai sair no DirectX 10(?) pelo visto...

Tirei este último dado dessa reportegem: http://www.beyond3d.com/articles/directxnext/

Você que deve gostar de programar vai gostar da reportagem! :-BEER

A Microsoft já anunciou que não vai haver um directX 9.1, somente o DirectX 9.0c, que vai ter como novidade o suporte ao Pixel Shader 3.0 da Nvidia, e a compreessão de texturas 3D da ATI (3Dc). No final nenhuma das duas empresas vai dar em seus produtos suporte completo ao DirectX 9.0c, curioso não? :blink:

Outra coisa que pode ser citada é que o OpenGL e o DirectX nas placas ATI e nVidia são executados de modos diferentes.

Na nVidia, o OpenGL fica no Hardware enquanto na ATI o DirectX é que fica no Hardware, e o DirectX na nVidia é via Software e o OpenGL na ATI é via Software, fazendo um rodar "em cima do outro" a grosso modo...

Interessante isso. Você tem a fonte da informação? Queria dar uma lida, isso explicaria boa parte dos problemas com OpenGL nas Radeons!

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por Ichigeki+15 maio 2004, 00:15-->
Isso só vai sair no DirectX 10(?) pelo visto...

Tirei este último dado dessa reportegem: http://www.beyond3d.com/articles/directxnext/

Você que deve gostar de programar vai gostar da reportagem!  :-BEER

A Microsoft já anunciou que não vai haver um directX 9.1, somente o DirectX 9.0c, que vai ter como novidade o suporte ao Pixel Shader 3.0 da Nvidia, e a compreessão de texturas 3D da ATI (3Dc). No final nenhuma das duas empresas vai dar em seus produtos suporte completo ao DirectX 9.0c, curioso não?  :blink:

Po cara, valeu, vou dar uma lida nisso aí =]

Ichigeki

Interessante isso. Você tem a fonte da informação? Queria dar uma lida, isso explicaria boa parte dos problemas com OpenGL nas Radeons!

Olha, eu não tenho fonte fácil pra colar aqui de cabeça, mas creio que essa informação pode ser encontrada no google ou algo assim sem muito esforço =]

Acompanha meu pensamento...

1º A Microsoft está andando meio que de mãos dadas com a ATI, já a nVidia preferiu um caminho diferente que não inclue a Microsoft nisso...

2º ATI não tem drivers bons em OpenGL.

3º Linux roda OpenGL.

4º Microsoft não gosta muito de Linux.

5º Microsoft gosta de monopólio e quer monopolizar seu DirectX.

Bom, agora pensa comigo, quando você acha que a ATI vai ter drivers bons pra Linux?

Vai demorar um pouco hehehe, vale lembrar que quando a 3DFX estava com seu Glide ameaçando o DirectX da Microsoft, ela deu um "golpe" na 3DFX que acabou fazendo ela falir de vez e afundar seu Glide pra sempre para a concorrencia não existir mais... =[

Link para o comentário
Compartilhar em outros sites

Hehehe...você não gosta muito da Microsoft né? :P

Bom, não que eu goste muito... :priv:

Um pouco de bla bla bla: :priv:

A Microsoft colaborou por um grande período com o pessoal da OpenGL, aliás, curiosamente foi uma das fundadoras! Recentemente ela saiu de lá alegando que vão redirecionar os esforços para sua API gráfica Direct3D.

Comentando um pouco mais sobre o Direct3D, ele já foi, sim, muito ruim. Alguns desenvolvedores dizem que até a versão 7 era horrível fazer qualquer coisa. Na versão atual, o Direct3D 9, além do suporte ao Shaders 2.0 e outras implementações via hardware, a facilidade de programação aumentou muito...não por acaso a maioria das inovações foram copiadas do OpenGL.

Algumas abstrações, como camadas de desenho, são realmente muito mais fáceis de implementar com o Direct3D. Isso porque o Direct3D nasceu como API para jogos, trazendo uma série de facilidades na hora de escrever o código específico dos games, enquanto o OpenGL é para uso geral. Mas o OpenGL tem uma escrita muito mais intuitiva, e é muito mais "elegante", bem ao gosto dos programadores mais tradicionais. No final, fica na mão dos desenvolvedores escolher qual usar. Como nada é perfeito, em alguns casos com o OpenGL fica mais fácil, em outros o Direct3D.

Um agravante sério contra o OpenGL é que sem o $$$ da Microsoft o projeto não está andando muito. Gostando ou não os programadores da Microsoft estavam extremamente enraizados no projeto, o suficiente pra causar algum estrago ao saírem.

Minha opinião é que o Direct3D vai ser a API dominante nos jogos, e o OpenGL vai continuar existindo, mas em alguns nichos espcíficos como o pessoal que mexe com CAD, ou quem usa o Linux como plataforma.

Se o OpenGL vai continuar bom pra games? Isso depende da capacidade dos desenvolvedores do OpenGL. Rezo pra que consigam manter o OpenGL em um bom nível! :-BEER

Link para o comentário
Compartilhar em outros sites

Não é que eu não goste da Microsoft, eu não gosto é de quem quer monopolizar as coisas porque isso é ruim pra mim, e eu não gosto do que não é bom :D

Como você disse, em alguns casos fica ruim programar pra OpenGL, esse caso é o caso do Windows que tem um suporte tosco pra ele =[

O que você programaria escrevendo DrawVertexArray(), no windows tem que mudar pra 3x13HF8XDC90... (esse exemplo foi ficticio mas deu pra pegar a ideia).

Ainda bem que existem pessoas que são desafiadoras como por exemplo a nVidia que não seguiu muito a linha da Microsoft e a ID que fez o Doom3 só em OpenGL =]

Eu ainda arrisco dizer, mesmo que não tenha muito haver com o tópico, que novas placas da nVidia serão lançadas com Doom3 e isso vai resultar em grandes vendas... Mas claro, é só um chute :D

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por Kyle@14 maio 2004, 04:43

E o compilador que costuma ser utilizado atualmente é o HLSL (ou algo assim), ele foi inicialmente desenvolvido pela ATI e depois mais tarde finalizado pela Microsoft, ou seja, ele foi feito jogando pro lado da ATI =]

Os códigos quando compilados ficam cheios de TEMPS inúteis e como todo mundo sabe, quanto mais temps, mais lento fica o processamento, mas tem um único processador que não fica lento com tantos TEMPS e sabem qual é?

Os R3XX da ATI, que coincidência né? uhahuahua =]

Bom, isso era um problema pra nVidia, para tentar "arrumar" isso, a nVidia colocou um compilador otimizado para ela mesma no seus novos drivers ForceWare, ele vai ler o jogo e no menor tempo possível tentar recompilar para ser otimizado para o "estilo nVidia" e nos jogos que eram "compilados para a ATI" a nVidia teve um ganho grande com esse compilador otimizado utilizado no driver, mas nos jogos que foram compilados "normais" o ganho foi nulo =]

Esse episódio do compilador é interessante comentar também. Muita gente acusa a Geforce FX de ruim, na verdade os chipsets NV3x são superiores ao R3xx em funcionalidades. Inclusive em algumas tarefas ele é muito superior ao chip R3xx, mas não há ganho por causa do compilador, que não aproveita as funcionalidades do chip.

Outra coisa que não se divulga muito é que a Nvidia tem a sua linguagem Cg, que é um superset do C/C++ que possibilita usar as funcionalidades da programabilidade sem ter que apelar pra linguagens de baixo nível como fortran e assembly. Muitos engenheiros e programadores consideram o modelo de Shaders da Nvidia muito mais elegante e fácil de implementar. Os Shaders da ATI, apesar de seguirem o modelo do DirectX à risca, são uma tortura por causa de algumas limitações impostas pelo projeto das R3xx, e a dificuldade de se programar em baixo nível. Esses problemas acabam não sendo muito perceptíveis pois o hardware atual não possui potência para aproveitar os Shaders 2.0 ao máximo.

Para os programadores fica difícil. As arquiteturas das duas placas são diferentes o suficiente para causar problemas de compatibilidade na hora de compilar. Opta-se por um "modo de compatibilidade" que no final acaba favorecendo a ATI por causa do compilador otimizado...

Link para o comentário
Compartilhar em outros sites

Outra coisa interessante de se comentar é que o DirectX tem seus níveis de evolução, por exemplo um DirectX 7 nunca poderia fazer um Pixel Shaders, porém com o OpenGL é diferente...

Ele tem um sistema de extensão que permite que um OpenGL 1.1 rode PS ou por exemplo faça qualquer coisa que o DirectX 9 faria...

Sendo assim, a numeração do OpenGL não serve para medir a capacidade da placa, a numeração só serve para indicar quais extensões deixaram de ser extenções e quais foram revisadas...

O OpenGL vai deixar de ser uma API, vai ser uma "linguagem de programação de gráficos" que só será suportada pelas VPUs mas não pelas GPUs que temos hoje em dia...

Legal você ter comentado sobre o CG da nVidia...

Parece que a nVidia também quer fazer seu monopólio com o CG hehe, mas isso é legal, as coisas tem que evoluirem mesmo, e o mais interessante de tudo isso é que existem boatos de que o OpenGL 2.0 e o CG vão se unificar, isso porque a nVidia não quer ser escrava da Microsoft =]

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!