#region File Description
//-----------------------------------------------------------------------------
// QuadDrawer.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#endregion
#region Using Statements
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
#endregion
namespace Audio3D
{
///
/// Helper for drawing 3D quadrilaterals. This is used to draw the cat
/// and dog billboard sprites, and also the checkered ground polygon.
///
class QuadDrawer
{
#region Fields
GraphicsDevice graphicsDevice;
AlphaTestEffect effect;
VertexPositionTexture[] vertices;
#endregion
///
/// Constructs a new quadrilateral drawing worker.
///
public QuadDrawer(GraphicsDevice device)
{
graphicsDevice = device;
effect = new AlphaTestEffect(device);
effect.AlphaFunction = CompareFunction.Greater;
effect.ReferenceAlpha = 128;
// Preallocate an array of four vertices.
vertices = new VertexPositionTexture[4];
vertices[0].Position = new Vector3(1, 1, 0);
vertices[1].Position = new Vector3(-1, 1, 0);
vertices[2].Position = new Vector3(1, -1, 0);
vertices[3].Position = new Vector3(-1, -1, 0);
}
///
/// Draws a quadrilateral as part of the 3D world.
///
public void DrawQuad(Texture2D texture, float textureRepeats,
Matrix world, Matrix view, Matrix projection)
{
// Set our effect to use the specified texture and camera matrices.
effect.Texture = texture;
effect.World = world;
effect.View = view;
effect.Projection = projection;
// Update our vertex array to use the specified number of texture repeats.
vertices[0].TextureCoordinate = new Vector2(0, 0);
vertices[1].TextureCoordinate = new Vector2(textureRepeats, 0);
vertices[2].TextureCoordinate = new Vector2(0, textureRepeats);
vertices[3].TextureCoordinate = new Vector2(textureRepeats, textureRepeats);
// Draw the quad.
effect.CurrentTechnique.Passes[0].Apply();
graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, vertices, 0, 2);
}
}
}