Olá!
Devido a alguns problemas, não acabei implementando muitas coisas nesses ultimos dias. Também perdi muito tempo corrigindo um bug no desenho (as texturas não estavam mais funcionando) e na câmera (as transformações passaram a acontecer invertidas).
Pra compensar, diversas alterações se fizeram necessárias na classe draw para chegar à formula perfeita, e desconfio que esta formula ainda não chegou ao seu ápice.
A maior decisão de projeto envolveu remover o modo de posicionamento do desenho. Agora para movimentar os objetos no cenário só é possível utilizando-se a classe de transformações.
Também inseri desenho de textura com e sem glRepeat, de forma que o usuário deve informar apenas o tamanho da primitiva gráfica, quais serão as texturas utilizadas, qual será a ordem para cada face, e qual será o fator de repetição para cada face.
Para contextualizar, segue o cabeçalho do método drawParallelepiped:
//Desenha um paralelepípedo ou cubo dependendo das dimensões desejadas
//Recebe o tamanho em largura, altura e profundidade no vetor size
//Recebe um ponteiro para um array contendo todas as texturas usadas na rederização de cada face
//Recebe a sequencia de aplicação de textura (ex: se houver apenas uma textura em textures,
// podemos setar o valor de textureSequence como: {0,0,0,0,0,0}, ou seja, a mesma textura para todas as faces)
//Em caso de uso de TEXTURE_REPEAT, passar o fator de repetição para cada face em X e Y (factor)
//(usar DEFAULT_FACTOR para GL_CLAMP)
//A ordem das faces desenhadas é: TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT
void drawParallelepiped(const math::Vector3D size,const GLuint *textures,
const GLuint textureSequence[6],const GLuint factor[6][2]);
Também implementei Culling para todo tipo de forma desenhada para otimizar a engine. Apesar de quase, a parte de desenho ainda não está finalizada, pois estou dando uma melhor estudada em texturas a fim de criar formas geométricas arredondadas com textura aplicada.
Nenhum comentário:
Postar um comentário