Curso completo de DirectX 9 com C\C++
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 1-1
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:
Pacote | Resumo |
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.
Produzido por Gameprog: Jair Pereira - Agosto/2014 ©
gameprog.br@gmail.com
http://www.gameprog.com.br