} // ModificarTextura().fim // ---] // [--- private void desenharObjeto(Mesh obj, Propriedades3D props) { // Ajusta rotação do objeto 3d Matrix obj_rot = Matrix.RotationX(props.rotation.X + angulo) * Matrix.RotationY(props.rotation.Y) * Matrix.RotationZ(props.rotation.Z); // Ajusta posição do objeto 3d Matrix obj_pos = Matrix.Translation(props.position); // Tranfere posição e rotação para o mundo device.Transform.World = obj_rot * obj_pos; // Prepara e aplica uma material\textura no objeto for (int ncx = 0; ncx < g_meshMtl.Length; ncx++) { // Informa ao dispositivo o material a ser utilizado // na renderização device.Material = g_meshMtl[ncx]; // <b> // Modifica a textura ModificarTextura(g_meshTex[ncx]); // </b> device.SetTexture(0, g_meshTex[ncx]); // Renderiza o mesh obj.DrawSubset(ncx); } // endfor } // desenharObjeto()
} // AtualizarCamera() // [--- public void Renderizar() { // Limpa os dispositivos e os buffers de apoio device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.White.ToArgb(), 1.0f, 0); device.BeginScene(); // (...) Todo o código de desenhar vai aqui // Atualiza a câmera AtualizarCamera(); AtualizarLuz(); // Desenha o primeiro mesh posicao = new Vector3(-150.0f, 40.0f, -200.0f); rotacao = new Vector3(0, 0, 0); g_props = new Propriedades3D(posicao, rotacao); // <b> // Modifica propriedades da textura device.SamplerState[0].MagFilter = TextureFilter.Linear; // </b> desenharObjeto(objeto3D, g_props); // Desenha um segundo mesh g_props.position.X = 100.0f; g_props.position.Y = 0.2f; // <b> // Modifica propriedades da textura device.SamplerState[0].MagFilter = TextureFilter.None; // </b> desenharObjeto(objeto3D, g_props); device.EndScene(); // Apresenta a cena renderizada na tela device.Present(); // Libera a janela para processar outros eventos Application.DoEvents(); } // Renderizar()