1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using DXGraphics = Microsoft.DirectX.Direct3D;
// On charge l'image du sprite
public void LoadTextures()
{
try
{
spriteTexture = DXGraphics.TextureLoader.FromFile(device, @"..\..\..\Media\Images\hero_test2.png");
}
catch (Exception e)
{
MessageBox.Show("There has been an error loading the textures:" + e.
ToString(), "oops");
}
}
// Et on l'affiche
public void Render()
{
if (device == null)
return;
// Matrice de décalage pour déplacer les sprites à l'écran
Matrix QuadMatrix = new Matrix();
QuadMatrix = Matrix.Identity;
QuadMatrix.Translate(-1f, 1f, 0f);
// Effacement de l'écran avec une couleur beige (par exemple)
device.Clear(DXGraphics.ClearFlags.Target, System.Drawing.Color.Beige, 1.0f, 0);
// On commence la scène
device.BeginScene();
// Rendu du sprite
device.SetStreamSource(0, vertexBuffer, 0);
device.RenderState.AlphaBlendEnable = true;
device.RenderState.AlphaFunction = DXGraphics.Compare.Greater;
device.RenderState.AlphaTestEnable = true;
device.RenderState.DestinationBlend = DXGraphics.Blend.InvSourceAlpha;
device.RenderState.SourceBlend = DXGraphics.Blend.SourceAlpha;
device.RenderState.DiffuseMaterialSource = DXGraphics.ColorSource.Material;
device.SetTexture(0, spriteTexture);
// On met le sprite au milieu
QuadMatrix.Translate(0, 0, 0f);
device.SetTransform(DXGraphics.TransformType.World, QuadMatrix);
device.DrawPrimitives(DXGraphics.PrimitiveType.TriangleFan, 0, 2);
// On termine la scène
device.EndScene();
device.Present();
} |
Partager