Ilustrissimo

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1073 palavras )
  • Download(s) : 0
  • Publicado : 23 de abril de 2013
Ler documento completo
Amostra do texto
Direct3D

Tutorial 4

Microsoft C# Direct3D com XNA Tutorial 4: Texturas
Este tutorial usa um novo projecto para associar uma textura a uma figura plana.

Crie um projecto novo
Crie um projecto Direct3D_Desenho2D_04.

Visão geral
Neste projecto irá terminar com uma janela onde existem figuras desenhadas de três formas distintas: com linhas, com superfícies coloridas e com texturas.Acrescentar uma textura ao projecto
Para criar uma textura vai adicionar uma figura ao conteúdo do projecto. Irá fazer uma referência ao ficheiro “fig1.png” que vem juntamente com o tutorial. Para tal siga os seguintes passos: a) Na pasta Content acrescente a imagem adicionando a referência:

b)

Escolha a imagem no directório onde a guardou inicialmente. Passará a existir uma cópia da imagemno directório “…Content” do projecto. Os recursos como tipos de letra, imagens e sons ficam assim separados da componente lógica da aplicação. Repita a) e b) para a imagem “fig2.png”.

c)

Marco Costa/2011

Pág. 1

Direct3D
Criar as classes necessárias
Vai em seguida criar as classes necessárias à definição do desenho. Crie cada classe num ficheiro diferente.

Tutorial 4

ClasseFigura2D
A classe Figura2D vai permitir desenhar os objectos gráficos todos enviando a mesma mensagem.

using using using using

System; System.Collections.Generic; System.Linq; System.Text;

using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace Direct3D_Desenho2D_04
Marco Costa/2011

Pág. 2

Direct3D
{ public abstract class Figura2D { public abstract voidInitialize(); public abstract void Draw(GraphicsDevice device, BasicEffect basicEffect); } }

Tutorial 4

Acrescente as mesmas referências nas classes seguintes. Por economia de espaço serão ignoradas as referências anteriores no código.

Classe FiguraCircular
A classe FiguraCircular vai permitir desenhar figuras baseadas na circunferência (circunferência, círculo e círculo texturizado).public abstract class FiguraCircular : Figura2D { public int NrFatias { get; set; } public float Raio { get; set; } public Vector3 Centro { get; set; } public FiguraCircular() { } public FiguraCircular(float raio, Vector3 centro, int nrFatias) { this.Raio = raio; this.Centro = centro; this.NrFatias = nrFatias; } }

Nota: se deu outro name ao Namespace altere-o em conformidade.
A classeCirculoTexturizado
Crie a classe CirculoTexturizado num novo ficheiro. Use as referências aos mesmos namespaces da classe anterior.

class CirculoTexturizado : FiguraCircular { public Texture2D Textura { get; set; } VertexPositionTexture[] Pontos { get; set; } public CirculoTexturizado(float raio, Vector3 centro, int nrFatias, Texture2D textura) : this(raio, centro, nrFatias, textura, 0, 0) { } publicCirculoTexturizado(float raio, Vector3 centro, int nrFatias, Texture2D textura, float width, float height):base(raio,centro,nrFatias) { this.Textura = textura; Initialize(); } public override void Initialize() {
Marco Costa/2011

Pág. 3

Direct3D
Pontos = new VertexPositionTexture[NrFatias * 3]; float xAnterior = this.Centro.X + this.Raio; float yAnterior = this.Centro.Y; float txAnterior =1.0f; float tyAnterior = 0.5f; Vector2 texturaCentro = new Vector2(0.5f, 0.5f);

Tutorial 4

for (int i = 0; i < NrFatias ; i++) { Pontos[i * 3] = new VertexPositionTexture(this.Centro, texturaCentro); float angulo = ((360.0f / NrFatias) * (i + 1)); float x1 = (float)(this.Centro.X + Math.Cos(MathHelper.ToRadians(angulo)) * this.Raio); float y1 = (float)(this.Centro.Y +Math.Sin(MathHelper.ToRadians(angulo)) * this.Raio); float tx1 = 0.5f + (float)(Math.Cos(MathHelper.ToRadians(angulo)) / 2.0d); float ty1 = 0.5f - (float)(Math.Sin(MathHelper.ToRadians(angulo)) / 2.0d); Pontos[i * 3 + 1] = new VertexPositionTexture(new Vector3(x1, y1, 0), new Vector2(tx1, ty1)); Pontos[i * 3 + 2] = new VertexPositionTexture(new Vector3(xAnterior, yAnterior, 0), new Vector2(txAnterior, tyAnterior));...
tracking img