DirectX - Porque usar ?

21 views
Skip to first unread message

wishmaster_rs

unread,
Jun 6, 2006, 11:08:10 PM6/6/06
to ccppbrasil
Olá a todos!
Minha dúvida em relação ao DirectX:

1 - Falando de programação, para que serve o DirectX?
2 - Para eu desenvolver uma aplicação que usa o DirectX, o que eu
devo fazer e saber?
3 - Porque eu devo ( e/ou não devo ) usar o DirectX?
4 - DirectX serve apenas para quem quer desenvolver games?
5 - Em que tipo de situações a minha única opção é o DirectX?
6 - A Microsoft disponibiliza informações para que desenvolvamos
aplicações DirectX?
7 - É difícil trabalhar com DirectX?

Tenho muitas dúvidas quanto esse assunto. Mas creio que ao desenvolver
aplicações como games ou "semelhantes" a games, me parece que o
DirectX é atraente.

Rodrigo Strauss

unread,
Jun 7, 2006, 8:38:25 AM6/7/06
to ccppb...@googlegroups.com
Segue:

> Olá a todos!
> Minha dúvida em relação ao DirectX:
>
> 1 - Falando de programação, para que serve o DirectX?

Biblioteca COM (http://www.1bit.com.br/content.1bit/weblog/sopa_de_letrinhas_com)
da Microsoft para desenvolvimento de jogos e programas gráficos.

http://en.wikipedia.org/wiki/Directx (parece que a wikipedia está com
uns problemas de estabilidade, "mas eu vou estar pedindo para o senhor
estar tentando mais tarde pois esse problema vai estar sendo
resolvido")

> 2 - Para eu desenvolver uma aplicação que usa o DirectX, o que eu
> devo fazer e saber?

Saber C++, COM e matemática. Google "3d programming tutorial" para ter
idéia da parte de matemática.

> 3 - Porque eu devo ( e/ou não devo ) usar o DirectX?

Veja resposta 1

> 4 - DirectX serve apenas para quem quer desenvolver games?

É a função principal, mas qualquer tipo de aplicativo gráfico pode usar DirectX

> 5 - Em que tipo de situações a minha única opção é o DirectX?

Sim, se você for fazer um jogo para XBOX ou XBOX 360.
No Windows, nenhuma. Você pode fazer jogos em GDI. Ele vai ficar
horrível, mas você pode... :-)
E existe também o OpenGL, que tem a mesma função do DirectX e é multiplataforma.

> 6 - A Microsoft disponibiliza informações para que desenvolvamos
> aplicações DirectX?

Google for "DirectX SDK". Tem helps, samples e toda a parafernalia
microsoftiana de sempre.

> 7 - É difícil trabalhar com DirectX?

Sim. Você precisa entender de trigonometria e calculo de matrizes além
de C++ e COM.

>
> Tenho muitas dúvidas quanto esse assunto. Mas creio que ao desenvolver
> aplicações como games ou "semelhantes" a games, me parece que o
> DirectX é atraente.

Sim. Mas se não for nada 3D, comece pelo
http://www.talula.demon.co.uk/allegro/ que sua vida vai ser muuuuito
mais fácil. Allegro é muito bom para iniciantes.

Strauss

Wanderley Caloni Jr

unread,
Jun 7, 2006, 9:18:36 AM6/7/06
to ccppb...@googlegroups.com
Adendo.

Se você está interessado em desenvolver jogos, além do DirectX e
OpenGL conheço uma biblioteca que é relativamente simples de mexer.
Chama-se allegro (http://www.talula.demon.co.uk/allegro/readme.html).
É uma camada a mais de facilidade para criar o seu mundinho 2/3D =)


--
Wanderley Caloni Jr
http://www.caloni.com.br

Rodrigo Strauss

unread,
Jun 7, 2006, 9:30:02 AM6/7/06
to ccppb...@googlegroups.com
O Allegro é uma biblioteca multiplataforma, que quando roda no Windows
roda sobre o DirectX. Vc usa mais uma camada:

seu código --> allegro --> DirectX

Então, usando allegro você não deixa de usar DirectX, só usa uma
camada de abstração para facilitar - muito - as coisas.

Wanderley Caloni Jr

unread,
Jun 7, 2006, 9:37:41 AM6/7/06
to ccppb...@googlegroups.com
Sorry, estava misturado com uma área de quot muito grande. Daí... nem vi =P

Thyago

unread,
Jun 7, 2006, 1:06:57 PM6/7/06
to ccppbrasil


1. Progamação de aplicativos graficos e multimidea(tocador de
video/audio, jogos 2D/3D, ambiente virtual)

2.
* Directx Graphics(Direct3D): além do COM como já disseram, você
precisa saber Algebra linear(Transform and Lighting, o famoso T&L) e
conhecimento sobre arquitetura das placas de video, para não fazer
cagada.
* Directx Audio, Directx Input. são faceis de usar... a documentação
é mais que suficiente, se você nao tentar criar um filtro de audio..

3.,4. ver 1

5. Quando você está progamando só para o windows e quer ter o
absoluto controle sobre o pipeline T&L(que ja nao existe mais no
DirectX10) e a placa de video.

6. Sim, na documentação da SDK tem dezenas de exemplos e alguns
tutoriais, mas não substituem um livro completo.

7. É, o COM te atrapalha um bocado no design do progama. Direct3D te
força a tomar nota de tudo o que está acontecendo. OpenGL te abstrai
mais do hardware do que o Direct3D o faz.


Infelizmente não dá para comparar Directx com OpenGL. Seria comparar
maça com laranja. Por que OpenGL é so uma libraria grafica, Directx
inclui interface para input, audio, etc.

No entantto _acho_ OpenGL a melhor escolha(entre Direct3D9/10 e
OpenGL2.0), pois você pode progamar para: windows, mac, *nix, PS2,
PS3, etc.
Pode usar OpenAL pra audio, e usar o input da propria plataforma.

DQ

unread,
Jun 7, 2006, 5:51:39 PM6/7/06
to ccppbrasil
Oferecendo algumas respostas alternativas:

1) Para que serve
O DirectX surgiu porque o acesso ao vídeo da forma "normal" (GDI) era
muito lento e sem recursos quando comparado com o acesso direto ao
hardware (como era feito no tempo do DOS e não deve ser feito sob o
Windows).

2) O que eu devo fazer e saber
Basicamente é o que precisa fazer é chamar as funções certas da
biblioteca COM com os parâmetros corretos ; )
Programando em C e C++, você precisa conhecer um pouco como se usa uma
biblioteca COM. Além disso, a maior parte das funções do DirectX diz
respeito a manipulações gráficas 2D e 3D, portanto você precisa
conhecer isto.

3) Porque usar ou não usar?
O principal motivo para não usar é que com DirectX você está preso
ao Windows. Por outro lado, se você só quer fazer programas Windows,
o DirectX normalmente já está instalado na máquina e é suportada
por praticamente todos os fabricantes de hardware.

5) Serve só para games?
Não, mas normalmente apenas games precisam de um controle tão grande
sobre o vídeo. Por outro lado, tenho a impressão que o Avalon
(interface gráfica do Vista) roda sobre o DirectX.

6) Informações disponíveis
Como foi dito, a Microsoft tem um SDK com um monte de informações.
Tem também um monte de livros (em inglês) sobre o assunto.

7) Dificuldade
Tenho a impressão que a maior dificuldade é entender manipulação
gráfica 2D e 3D. A parte de usar COM acaba ficando mecânica.

wishmaster_rs

unread,
Jun 7, 2006, 7:24:25 PM6/7/06
to ccppbrasil
Resposta a TODOS:

Pessoal, estou MUITO satisfeito com a resposta que TODOS me deram.
Agora eu sei os passos que devo tomar até chegar no directX: C/C++ >>
COM >> DirectX.

Sobre matemática, trigonometria, Luz e Sombra, texturas e tal, creio
que não há muita dificuldade. A minha intenção mesmo é 2D ( e
alguns efeitos interessantes que o 3D oferece sobre/sob o 2D ).

A minha intenção NÃO é criar games, mas sim, saber o que eu preciso
saber na hora de trabalhar com multimídia e principalmente, se eu
precisar de muita velocidade e precisão na exibição/tempo de vídeo.
Tenho algumas idéias em mente e penso que saber DirectX é muito bom.

Aquela parte sobre "entender de placas de vídeo" parece um pouco
complicada... entender o básico sobre placas de vídeo, tudo bem. Mas,
especializar-se em várias placas me parece uma M#$%@.

Rodrigo, a tua página sobre COM eu já li, diversas vezes. Continue
escrevendo nela porque é muito útil e tem mais: muito bem lembrado!
Por que as pessoas vão estar falando tão errado? Será que as pessoas
não vão estar fazendo umas aulas de português? Será que os
professores estão tendo que estar em greve??? Não entendo... mas um
dia, vou estar entendendo....
ESTAR OU NÃO ESTAR? AÍ ESTÁ A QUESTÃO ( ou estava...)

Atenção: Antes de eu procurar por algo BOM ( e acabar gastando
dinheiro onde não devia), vocês podem me indicar livros sobre DirectX
e COM??

Algumas considerações:
O livro pode ser em inglês ou português, tanto faz.
Programar para outro sistema que não Windows ainda não me interessa.
Dificilmente eu serei bom para programar para PSX, apesar de eu ser um
veterano em jogar games.

Poxa, esqueci de uma coisa!!! Ainda nem sei nada sobre Windows SDK!
Mas, tudo que eu "pego" aqui eu anoto. Como não posso fazer faculdade,
vou anotando minhas "próximas cadeiras" pelas sugestões de vocês!

UM GRANDE ABRAÇO A TODOS!!!!

Thyago

unread,
Jun 7, 2006, 8:45:14 PM6/7/06
to ccppbrasil
Dois livros:

1) Introduction to 3D Game Programming with DirectX 9.0

2) Focus On 2D In Direct3D
Apesar de usar Direct3D8(DirectX8) ele mostra muita coisa sobre 2D e
sobre progamação grafica.

(ambos você econtra no amazon e no emule etc...)

'C/C++ >>
COM >> DirectX. '

Acho que não precisa aprofundar no 2nd não, alguns livros de direct3d
te explica o que é o COM do directx em 1 ou 2 paginas.

'Aquela parte sobre "entender de placas de vídeo" parece um pouco
complicada... entender o básico sobre placas de vídeo, tudo bem.'

Sim, mais do que o basico é só para fazer otimizações e criar
pequenos progamas(digo, shaders) que rodem na placa(digo, na GPU).

'A minha intenção NÃO é criar games, mas sim, saber o que eu


preciso
saber na hora de trabalhar com multimídia e principalmente, se eu
precisar de muita velocidade e precisão na exibição/tempo de vídeo.

'

Nesse caso, talvez você só precise saber usar DirectDraw(que foi
descontinuado pela microsoft) e DirectAudio/Music. Infelizmente não
conheço algum livro bom sobre isso.
Pra usar Direct3D usa-se muita álgebra linear. Mesmo se vocÊ quizer
só exibir umas figuras na tela.


'Sobre matemática, trigonometria, Luz e Sombra, texturas e tal, creio
que não há muita dificuldade.'

No começo é só um pouco dificil, mas depois piora.
http://triplebuffer.devmaster.net/file.php?id=5&page=0
Mas não preocupe.. o Directx tem algumas libs que fazem as coisas
dificeis por você: d3dx e a dxtu

'A minha intenção mesmo é 2D ( e
alguns efeitos interessantes que o 3D oferece sobre/sob o 2D ).'
Pra 2D, você pode usar projeção ortogonal. Ou pespectiva(3D) com as
faces viradas para a janela/diplay.

wishmaster_rs

unread,
Jun 7, 2006, 9:29:41 PM6/7/06
to ccppbrasil
>> Nesse caso, talvez você só precise saber usar DirectDraw(que foi
>> descontinuado pela microsoft) e DirectAudio/Music. Infelizmente não...

Sobre o DirectDraw que foi descontinuado, eu queria saber o porque e o
que existe para substituir o DirectDraw que é melhor que ele. Deve
existir algo muito melhor, se não, não seria descontinuado, concorda?

Ah, falando sobre geometria, graças a Deus não pretendo fazer games
nem "virutosismos" 3D... realmente, a metemática dos gráficos em 3D
é muito complicada ( mas nada que um pouco de empenho e boas horas de
estudos diários não ajude ).

Hugo Parente Lima

unread,
Jun 8, 2006, 12:08:58 AM6/8/06
to ccppb...@googlegroups.com
Em Quarta 07 Junho 2006 14:06, Thyago escreveu:
> No entantto _acho_ OpenGL a melhor escolha(entre Direct3D9/10 e
> OpenGL2.0), pois você pode progamar para: windows, mac, *nix, PS2,
> PS3, etc.
> Pode usar OpenAL pra audio, e usar o input da propria plataforma.

Ou pode usar a SDL para input.

--
Hugo Parente Lima.
"Precisamos de mais gênios humildes no mundo, hoje somos poucos!"
JID: hu...@jabber.org

Rodrigo Strauss

unread,
Jun 8, 2006, 11:25:28 AM6/8/06
to ccppb...@googlegroups.com
> Rodrigo, a tua página sobre COM eu já li, diversas vezes. Continue
> escrevendo nela porque é muito útil e tem mais: muito bem lembrado!
> Por que as pessoas vão estar falando tão errado? Será que as pessoas
> não vão estar fazendo umas aulas de português? Será que os
> professores estão tendo que estar em greve??? Não entendo... mas um
> dia, vou estar entendendo....
> ESTAR OU NÃO ESTAR? AÍ ESTÁ A QUESTÃO ( ou estava...)

Vocês só vêem os absurdos que escrevem nos comentários. Sintam-se
felizes por não verem os absurdos que eu recebo pelo formulário de
contato. :-)

Não sei se vocês repararam, mas eu até desabilitei os comentários de
alguns artigos. Eu estava fazendo uma força imensa para ir para o céu,
mas não consegui.

Thyago

unread,
Jun 8, 2006, 2:06:42 PM6/8/06
to ccppbrasil

wishmaster_rs wrote:
> Sobre o DirectDraw que foi descontinuado, eu queria saber o porque e o
> que existe para substituir o DirectDraw que é melhor que ele. Deve
> existir algo muito melhor, se não, não seria descontinuado, concorda?

Eu não tenho certeza, mas creio que seja um bom motivo:

O DirectDraw trabalha com lock e copias de areas de texturas(surfaces).
Essas duas operações são lentas. Não sei se ele pode fazer mais que
isso, sei que tocadores de video costumam(ou costumavam? xP) usar
DirectDraw e não Direct3D.

O Direct3D também consegue faz lock e cópia de texturas, mas ele
também pode fazer texture mapping(usa o pixel shader da GPU da placa
de video) que pode chegar a ser dezenas de vezes mais rápido(mesmo
usando varios efeitos).


Se for só para tocar video, essas coisas.. dê uma olhada na OpenML ou
na VMR9(da PlataformSDK, nao conheço link).

OpenML: http://www.khronos.org/openml/

wishmaster_rs

unread,
Jun 8, 2006, 7:39:48 PM6/8/06
to ccppbrasil
Então, Thyago, o negócio é Direct3D? Beleza! O que seria de mim sem
vocês?

Rodrigo, pela sua atitude nos feeds, você "não vai estar indo para o
céu".

He he he he he... um grande abraço!

Reply all
Reply to author
Forward
0 new messages