Konstantin Koch 8287c54432 Included the Visual Studio extension and made the necessary changes to make it run.
Replaced the old VS templates with ones that offer more flexiblity.
Started replacing the Content Project for the samples with our custom project type.
Inlcuded a basic not yet working AssimpImporter.
2015-04-08 14:50:03 +02:00

77 lines
3.5 KiB
C#

using ANX.Framework.Graphics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ANX.Framework.Content.Pipeline.Helpers
{
static class GraphicsHelper
{
private static GraphicsDevice _refDevice = null;
private static short[] _indices = new short[] { 0, 1, 2, 1, 3, 2 };
public static GraphicsDevice ReferenceDevice
{
get
{
if (_refDevice == null)
{
bool value = GraphicsAdapter.UseReferenceDevice;
GraphicsAdapter.UseReferenceDevice = true;
IntPtr handle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
_refDevice = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, GraphicsProfile.HiDef, new PresentationParameters() { DeviceWindowHandle = new NonXNA.WindowHandle(handle) });
GraphicsAdapter.UseReferenceDevice = value;
}
return _refDevice;
}
}
public static void DrawQuad(GraphicsDevice graphicsDevice, Texture2D sourceTexture, Rectangle sourceRegion, RenderTarget2D destinationTexture, Rectangle destinationRegion, TextureFilter filter)
{
if (graphicsDevice == null)
throw new ArgumentNullException("graphicsDevice");
if (sourceTexture == null)
throw new ArgumentNullException("sourceTexture");
if (destinationTexture == null)
throw new ArgumentNullException("destinationTexture");
graphicsDevice.SetRenderTarget(destinationTexture);
using (BasicEffect effect = new BasicEffect(graphicsDevice))
{
effect.FogEnabled = false;
effect.LightingEnabled = false;
effect.Projection = Matrix.CreateOrthographicOffCenter(destinationRegion.Left, destinationRegion.Right, destinationRegion.Bottom, destinationRegion.Top, 0f, 1f);
effect.TextureEnabled = true;
VertexPositionTexture[] vertices = new VertexPositionTexture[]
{
new VertexPositionTexture(new Vector3(0, 0, 0), new Vector2((float)sourceRegion.Left / sourceTexture.Width, (float)sourceRegion.Top / sourceTexture.Height)),
new VertexPositionTexture(new Vector3(1, 0, 0), new Vector2((float)sourceRegion.Right / sourceTexture.Width, (float)sourceRegion.Top / sourceTexture.Height)),
new VertexPositionTexture(new Vector3(0, 1, 0), new Vector2((float)sourceRegion.Left / sourceTexture.Width, (float)sourceRegion.Bottom / sourceTexture.Height)),
new VertexPositionTexture(new Vector3(1, 1, 0), new Vector2((float)sourceRegion.Right / sourceTexture.Width, (float)sourceRegion.Bottom / sourceTexture.Height))
};
foreach (var pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
graphicsDevice.SamplerStates[0].Filter = filter;
graphicsDevice.DrawUserIndexedPrimitives(PrimitiveType.TriangleList, vertices, 0, 4, _indices, 0, 2);
}
}
}
public static void Convert(GraphicsDevice graphicsDevice, byte[] sourcePixels, SurfaceFormat destinationFormat)
{
//convert from not compressed to compressed.
throw new NotImplementedException();
}
}
}