Ir para conteúdo
Faça parte da equipe! (2024) ×

[D3D/C++]Primeiras Noções


AceStryker
 Compartilhar

Posts Recomendados

A pedido de um membro eu vou criar esse tutorial que te apresenta o D3D, não o hook dele(hack de jogos principalmente de tiro) mas sim desenhar com ele, bom para aprender a criar seus jogos um pouco mais avançados!

 

Primeiramente a teoria :)

 

Graphic Adapter

Graphic Adapter é um array de pixels que guarda TODOS os pixels da tela, quando precisamos mudar alguma coisa que desenhamos, mudamos o mesmo e ele manda um comando para o monitor para que re-desenhe, o monitor desenha tudo de cima para baixo novamente.

 

Tearing

A velocidade máxima que um monitor consegue renderizar sua tela é entre 60~100fps.Quando você pede para renderizar a tela(2) enquanto o monitor esta renderizando(1), ele fica metade do 1 e do 2, isso é chamado de tearing.

 

Swapping

Para não haver tearing o DirectX criou um back buffer, que é basicamente um graphic adapter só que é secundário, ele fica na memória, e você o renderiza, quando ele estiver pronto, você joga seus pixels no front buffer que joga para a tela, a imagem antiga do front buffer é jogada fora.

 

Swap Chain

Mesmo com o swapping os programadores do DirectX viram que ainda da para causar tearing com isso, caso o back buffer for atualizado antes de o front buffer terminar de renderizar a tela, por isso criaram o swap chain que é basicamente adotou um sistema de poiners, veja a foto:

 

dx9B1-1.GIF

 

Quando o backbuffer fica pronto, o DirectX muda o pointer do front buffer para o back buffer e o do back buffer para o do front buffer, desse jeito não é possível que aja tearing.

 

Mas hoje em dia nos jogos os programadores optam para uma melhor performance do jogo usar 3 buffers, como na imagem abaixo:

dx9B1-2.GIF

 

E isto é chamado de swap chain.

 

Por tráz da prática

Neste tutorial vamos fazer simplesmente o seguinte: Pintar nossa tela do **** de vermelho, mas o modo de faremos isso é parecido com o que as pessoas criam os jogos, só que um pouco mais simples...O programa em si deve conter estas 3 funções, SEM EXCESSÃO:

 

  • Função para inicializar o D3D
  • Função para renderizar
  • Função para fechar

 

Finalmente no código!

 

Vamos primeiro começar a declarar algumas coisinhas:

 

É necessário se cadastrar para acessar o conteúdo.

 

Função de Inicialização

 

Essa é a primeira função excencial do programa, esta será responsável pela inicialização de todos os pointers e etc:

 

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.

 

O Swap effect é o que define a configuração de swapping, que pode ser:

 

D3DSWAPEFFECT_DISCARD é usado para ter a melhor velocidade, mas com isso caso você queira ver como anda o backbuffer, ele nem sempre estará intacto, pode ter sido modificado.

 

D3DSWAPEFFECT_FLIP é parecido com o acima mas com uma diferença, este é mais devagar, pelo motivo que este checa se o backbuffer não foi modificado no caminho até o front buffer

 

D3DSWAPEFFECT_COPY este daqui ao invéz de usar pointers para usar o back e o front buffer, ele copia pixel por pixel de cada vez, o que o torna lento e passivo de tearing.

 

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.

 

Agora para finalizar, a função que limpa da memória o DirectX

 

É necessário se cadastrar para acessar o conteúdo.

 

E o código inteiro ficará:

É necessário se cadastrar para acessar o conteúdo.

 

Créditos:

AceStryker & DirectXTutorial pelas imagens

Link para o comentário
Compartilhar em outros sites

  • 3 semanas atrás...

Man to a uma semana tentando intender essa linguagem mas e dificiu , tentei faze um hak aki mas nem o menu eu consegui cria . ajuda pf

 

dbzg.jpg

 

dbz3.jpg

 

dbz2p.jpg

 

Metas : ( x ) 10 posts

( x ) 25 posts

( ) 50 posts

( )100 posts

( ) Bronze Member

( ) Silver Member

( ) Gold Member

( ) Moderador Web Cheats

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.