Curso completo de DarkGdk
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 10.4
10.4 Produzindo elevações e depressões no terreno
10.1 Aspectos gerais
Na imagem acima você pode conferir a saída de nosso programa que produz uma
depressão e uma elevação no terreno. A função que realiza isso é dbSetMatrixHeight():
dbSetMatrixHeight (nMatrix, xpos, ypos, nAltura);
nMatrix - é o terreno para ser manipulado
nAltura - É aqui que você controla a altura do vértice do terreno,
colocando valor negativo para produzir uma depressão e valor
positivo para produzir uma elevação.
(xpos, ypos) - é a posição inicial do polígono para ser reposicionado
xpos é o deslocamento horizontal do ponto (esquerda ==> direita )
ypos é o deslocamento vertical do ponto ( baixo ==> cima )
Veja nosso programa exemplo:
// matrix04altura.cpp
// Esse programa mostra como alterar a altura de um vértice da matrix
// permitindo assim produzir elevações e depressões no terreno
#include "DarkGDK.h"
// Protótipo das funções
void initsys(); // inicializa o sistema
// ----------------------------------------------------------------------------
void DarkGDK ( void ) {
// Começo da aplicação DarkGdk
initsys();
// Criação básica de um terreno com o posicionamento da câmera para visualizá-lo
dbLoadImage ("c:\\gameprog\\gdkmedia\\bitmap\\textura2x2.bmp",1);
dbMakeMatrix (1,1000,1000,5,5);
dbPrepareMatrixTexture (1,1,2,2);
dbFillMatrix (1,10,1);
// Texturização individual
dbSetMatrixTile (1, 1, 1, 2);
dbSetMatrixTile (1, 2, 1, 2);
dbSetMatrixTile (1, 1, 0, 3);
dbSetMatrixTile (1, 2, 0, 4);
// Produzindo uma depressão e uma elevação
dbSetMatrixHeight (1,2,1,-60);
dbSetMatrixHeight (1,4,1,160);
// Atualização da matrix e configuração da câmera
dbUpdateMatrix (1);
dbPositionCamera (300, 200, -600);
dbRotateCamera (0,10,10);
while ( LoopGDK ( ) ) {
dbSync ( );
} // fim do while
return;
} // fim da função: DarkGDK
// ----------------------------------------------------------------------------
void initsys() {
// Esta função inicializa o sistema
dbSyncOn( );
dbSetWindowTitle("matrix04altura.cpp");
} // initsys().fim