Curso completo de DirectX 9 com C\C++
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 1-1

index << >>



1.1 Introdução ao DirectX 9


1. Visão geral

O DirectX 9 é um conjunto de bibliotecas para  produzir  e  manipular
gráficos  2D  e 3D,  música  e  efeitos  sonoros,  e  dispositivos de
entrada como mouse, teclado e joystick. É uma biblioteca que habilita
a  criação  de  uma  diversidade  de  aplicações  multimídia mas está
caracterizada pelo uso no desenvolvimento dos jogos de videogame mais
modernos na plataforma Windows e na linha  de  consoles  XBOX.   Esta
biblioteca  ainda  oferece  suporte para conexão de rede permitindo a
comunicação  de  computadores  ligados  por  uma  rede  local ou pela 
internet.

A  biblioteca  tem  uma fama internacional de ser complicada e de ser
difícil de dominar.   No  tocante  a essa fama confirmamos que isso é
uma amarga verdade,  fato  que  pode explicar a carência de livros em
língua portuguesa e a ausência de estúdios brasileiros  no mercado de
ponta de jogos de videogame com essa tecnologia.

Somando-se a  complexidade do directx existem ainda  outros  aspectos
que agravam ainda  mais  essa realidade: o directx é mal documentado,
os exemplos originais são difíceis  de  acompanhar por trazer classes
e funções não documentadas, e a programação para o  ambiente  Windows
é complicada por si mesma. Aliado  a  estas dificuldades do contexto, 
existe  o desafio colocado pela conceituação de matemática,  física e
geometria que cerca a produção de jogos. 

Para   contornar  todas  as  dificuldades  citadas  a  Gameprog  está
publicando  uma  série  de  cursos  voltados a programação  de  jogos
que iniciou-se com o curso de linguagem c\c++  e tem a honra agora de
publicar este curso de directx que cobre os aspectos fundamentais  do
DirectX 9.

O DirectX 9 é composto pelos componentes apresentados abaixo:

PacoteResumo
Direct3D Realiza todas as operações com gráficos 2D e principalmente 3D e contém uma biblioteca auxiliar de utilitários nomeada D3DX.
D3DX Realiza operações auxiliares com animação, texturas, superfícies, matemática e manipulação de geometria 3d
DirectDraw Realiza desenhos com gráficos 2D
DirectPlay Realiza operações de conexão de rede.
DirectSound Realiza operações de aúdio e efeitos sonoros.
DirectMusic Realiza operações com música
DirectInput Faz o tratamento da entrada: mouse, teclado e joystick
DirectShow Manipulação de vídeo. Manipula música de forma secundária.
O DirectDraw é considerado obsoleto e no seu lugar a documentação original do directx recomenda usar o Direct3D que absorveu suas funcionalidades. As funcionalidades 2D do Direct3D são cobertas neste curso. O DirectShow e seus arquivos de desenvolvimento não acompanham o o conjunto de arquivos do DirectX 9 que passou a integrar o kit geral de desenvolvimento para Windows. Se o DirectShow não estiver presente seus arquivos podem ser obtidos pela instalação do DirectX 8.1. Este curso não cobre o DirectMusic mas mostra como utilizar o DirectShow para tocar música. O curso não cobre o DirectPlay e o DirectDraw que são considerados obsoletos pela documentação original. Este curso representa o alicerce fundamental para a compreensão posterior dos cursos que vão cobrir os aspectos mais avançados do DirectX incluindo suas versões mais modernas como o DirectX 10 e 11. Por quê aprender Directx 9? Nesse momento existem várias versões mais modernas do Directx como a versão 10 ou 11. Então por quê perder tempo assimilando tecnologia obsoleta? Em um primeiro momento pode-se pensar que o Directx 9 está obsoleto mas de fato ele não está. Nesta época (2015) ele ainda é requisito mínimo para instalação do Windows 8 que faz uso dele para acelerar seus processos gráficos. O Directx 9 é mais didático para aprender; o volume de código para se produzir as primeiras aplicações é muito menor comparada com as versões mais atuais. A própria documentação original do directx nas versões mais modernas pressupõe também experiência nas versões prévias do directx. Então começar a estudar o directx pelas versões mais atuais é um caminho mais longo e mais difícil. Uma das vantagens de se aprender o Directx 9 é que vai ficar mais fácil para se entender e se explorar melhor com mais profundidade as diversas engines gráficas que existem e que são baseadas nele: Ogre3d, DarkGdk, Irrlitch etc. Fica mais fácil também de entender os recursos oferecidos pelas aplicações gráficas 3d como o Blender ou o 3D Studio Max porque você fica conhecendo o vocabulário e os recursos que advieram do directx. Então por essas e outras razões vale muito apenas empreender a jornada para ser aprender a utilizar o Directx 9 apresentado neste curso. 2. Adicionando o DirectX 9 na sua aplicação Para utilizar o DirectX 9 você precisa realizar dois passos básicos considerando o ambiente dado pelo Visual Studio da Microsoft: I) Configurar os caminhos de localização do Directx no Visual Studio que explicamos mais abaixo; II) Declarar o uso das bibliotecas usando as instruções: Acesso ao Direct3D e biblioteca auxiliar (D3DX) #include <d3d9.h> #include <d3dx9.h> #pragma comment (lib, "d3d9.lib") #pragma comment (lib, "d3dx9.lib") Acesso ao DirectInput #include <dinput.h> #pragma comment(lib, "dinput8.lib") #pragma comment(lib, "dxguid.lib") * As conexões com as outras bibliotecas são explicadas nos devidos capítulos. Fica aqui o exemplo da forma geral que se procede com qualquer biblioteca que você queira ter acesso dentro do sua aplicação. No primeiro passo, geralmente você vai proceder dessa forma: 1- No Visual Studio, selecione o menu TOOLS (Ferramentas ) e depois clique em OPTIONS (Opções). 2-Nesta janela vá em PROJECTS AND SOLUTIONS e clique em VC++ DIRECTORIES para incluir no Visual Studio o caminho de localização dos diretórios include e lib do Directx 9: Em resumo os caminhos padrões de localização do diretório Include e Lib do DirectX 9 são estes: C:\Program Files\Microsoft DirectX SDK (August 2007)\Include C:\Program Files\Microsoft DirectX SDK (August 2007)\Lib
2. Conceitos de visualização de imagem Vamos adiantar agora alguns conceitos que impactam na geração de imagens renderizadas que são utilizados na configuração da visualização da cena Isso vai evitar explicações no meio da apresentação do código que faz a configuração da câmera.
O aspecto ou ratio é uma razão da resolução da janela ou monitor, é uma divisão básica da largura\altura da tela que o sistema gráfico quer saber para desenhar as formas compensando a desprorpoção entre a largura e a altura que se for ignorada transforma circulos em esferas ovais e produz outras deformações na imagem.
O campo de visão ou fov (field of fiew) define o ângulo que reduz ou amplia o campo de visão da câmera.
O enquadramento do espaço, que no vocabulário do DirectX é chamado de frustrum define duas áreas de corte na renderização da cena: o que está fora dessa área que tem o formato de um trapézio deitado não é renderizado, e a proximidade com estes limites vai provocando mudanças na escala dos objetos.
index << >>

Produzido por Gameprog: Jair Pereira - Agosto/2014 © gameprog.br@gmail.com http://www.gameprog.com.br