added new target "create_packages" in build script
PreferredBackBufferWidth and PreferredBackBufferHeight are returning values now added EffectPass handling applying effects is not a workaround anymore
This commit is contained in:
parent
e473924abc
commit
d8d88b141c
@ -432,6 +432,7 @@
|
||||
<Compile Include="NonXNA\RenderSystem\INativeSamplerState.cs" />
|
||||
<Compile Include="NonXNA\RenderSystem\INativeTexture.cs" />
|
||||
<Compile Include="NonXNA\RenderSystem\INativeTexture2D.cs" />
|
||||
<Compile Include="NonXNA\RenderSystem\INativeEffectPass.cs" />
|
||||
<Compile Include="NonXNA\RenderSystem\PreDefinedShader.cs" />
|
||||
<Compile Include="NonXNA\RenderSystem\INativeBlendState.cs" />
|
||||
<Compile Include="NonXNA\RenderSystem\INativeBuffer.cs" />
|
||||
|
@ -76,7 +76,7 @@ namespace ANX.Framework.Graphics
|
||||
public Effect(GraphicsDevice graphicsDevice, byte[] byteCode)
|
||||
: base(graphicsDevice)
|
||||
{
|
||||
this.nativeEffect = AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>().CreateEffect(graphicsDevice, new MemoryStream(byteCode, false));
|
||||
this.nativeEffect = AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>().CreateEffect(graphicsDevice, this, new MemoryStream(byteCode, false));
|
||||
|
||||
this.techniqueCollection = new EffectTechniqueCollection(this, this.nativeEffect);
|
||||
this.currentTechnique = this.techniqueCollection[0];
|
||||
@ -89,8 +89,7 @@ namespace ANX.Framework.Graphics
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
[Obsolete("This is not a original XNA property")]
|
||||
public INativeEffect NativeEffect
|
||||
internal INativeEffect NativeEffect
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -56,10 +56,21 @@ namespace ANX.Framework.Graphics
|
||||
{
|
||||
private string name;
|
||||
private EffectAnnotationCollection annotations;
|
||||
private Effect parentEffect;
|
||||
|
||||
internal EffectPass(Effect parentEffect)
|
||||
{
|
||||
if (parentEffect == null)
|
||||
{
|
||||
throw new ArgumentNullException("parentEffect");
|
||||
}
|
||||
|
||||
this.parentEffect = parentEffect;
|
||||
}
|
||||
|
||||
public void Apply()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
this.parentEffect.NativeEffect.Apply(this.parentEffect.GraphicsDevice);
|
||||
}
|
||||
|
||||
public string Name
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using ANX.Framework.NonXNA;
|
||||
|
||||
#endregion // Using Statements
|
||||
|
||||
@ -56,12 +57,37 @@ namespace ANX.Framework.Graphics
|
||||
{
|
||||
public sealed class EffectPassCollection : IEnumerable<EffectPass>
|
||||
{
|
||||
#region Private Members
|
||||
private Effect parentEffect;
|
||||
private INativeEffect nativeEffect;
|
||||
private INativeEffectTechnique parentTechnique;
|
||||
private List<EffectPass> passes;
|
||||
|
||||
#endregion // Private Members
|
||||
|
||||
internal EffectPassCollection(Effect parentEffect, INativeEffect nativeEffect, INativeEffectTechnique parentTechnique)
|
||||
{
|
||||
this.parentEffect = parentEffect;
|
||||
this.nativeEffect = nativeEffect;
|
||||
this.parentTechnique = parentTechnique;
|
||||
this.passes = new List<EffectPass>();
|
||||
|
||||
foreach (EffectPass pass in parentTechnique.Passes)
|
||||
{
|
||||
this.passes.Add(pass);
|
||||
}
|
||||
}
|
||||
|
||||
public EffectPass this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
if (index >= passes.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("index");
|
||||
}
|
||||
|
||||
return passes[index];
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,28 +97,28 @@ namespace ANX.Framework.Graphics
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator<EffectPass> IEnumerable<EffectPass>.GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
IEnumerator<EffectPass> IEnumerable<EffectPass>.GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public List<EffectPass>.Enumerator GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public List<EffectPass>.Enumerator GetEnumerator()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return this.passes.Count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -58,18 +58,23 @@ namespace ANX.Framework.Graphics
|
||||
{
|
||||
public sealed class EffectTechnique
|
||||
{
|
||||
private Effect parentEffect;
|
||||
private INativeEffectTechnique nativeTechnique;
|
||||
private EffectPassCollection effectPassCollection;
|
||||
|
||||
public INativeEffectTechnique NativeTechnique
|
||||
internal EffectTechnique(Effect parentEffect, INativeEffectTechnique nativeTechnique)
|
||||
{
|
||||
this.parentEffect = parentEffect;
|
||||
this.nativeTechnique = nativeTechnique;
|
||||
this.effectPassCollection = new EffectPassCollection(parentEffect, parentEffect.NativeEffect, nativeTechnique);
|
||||
}
|
||||
|
||||
internal INativeEffectTechnique NativeTechnique
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.nativeTechnique;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.nativeTechnique = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
@ -92,7 +97,7 @@ namespace ANX.Framework.Graphics
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return this.effectPassCollection;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -103,6 +103,10 @@ namespace ANX.Framework.Graphics
|
||||
this.samplerStateCollection = new SamplerStateCollection(this, 8); //TODO: get maximum number of sampler states from capabilities
|
||||
this.textureCollection = new TextureCollection();
|
||||
this.vertexTextureCollection = new TextureCollection();
|
||||
|
||||
this.BlendState = BlendState.Opaque;
|
||||
this.DepthStencilState = DepthStencilState.Default;
|
||||
this.RasterizerState = RasterizerState.CullCounterClockwise;
|
||||
}
|
||||
|
||||
~GraphicsDevice()
|
||||
@ -138,6 +142,7 @@ namespace ANX.Framework.Graphics
|
||||
|
||||
public void Present(Nullable<Rectangle> sourceRectangle, Nullable<Rectangle> destinationRectangle, IntPtr overrideWindowHandle)
|
||||
{
|
||||
//TODO: implement
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
@ -326,7 +331,13 @@ namespace ANX.Framework.Graphics
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
if (this.nativeDevice != null)
|
||||
{
|
||||
this.nativeDevice.Dispose();
|
||||
this.nativeDevice = null;
|
||||
}
|
||||
|
||||
//TODO: more to dispose?
|
||||
}
|
||||
|
||||
protected virtual void Dispose(Boolean disposeManaged)
|
||||
@ -334,7 +345,7 @@ namespace ANX.Framework.Graphics
|
||||
//TODO: implement
|
||||
}
|
||||
|
||||
public INativeGraphicsDevice NativeDevice
|
||||
internal INativeGraphicsDevice NativeDevice
|
||||
{
|
||||
get
|
||||
{
|
||||
@ -342,6 +353,7 @@ namespace ANX.Framework.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
#region Public Properties
|
||||
public IndexBuffer Indices
|
||||
{
|
||||
get
|
||||
@ -452,31 +464,11 @@ namespace ANX.Framework.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
public Rectangle ScissorRectangle
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public DisplayMode DisplayMode
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public GraphicsDeviceStatus GraphicsDeviceStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return this.currentAdapter.CurrentDisplayMode;
|
||||
}
|
||||
}
|
||||
|
||||
@ -565,6 +557,28 @@ namespace ANX.Framework.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
#endregion // Public Properties
|
||||
|
||||
public Rectangle ScissorRectangle
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public GraphicsDeviceStatus GraphicsDeviceStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public SamplerStateCollection VertexSamplerStates
|
||||
{
|
||||
get
|
||||
|
@ -70,6 +70,9 @@ namespace ANX.Framework
|
||||
public static readonly int DefaultBackBufferWidth = 800;
|
||||
public static readonly int DefaultBackBufferHeight = 600; //TODO: this is 480 in the original XNA
|
||||
|
||||
private int backBufferWidth = DefaultBackBufferWidth;
|
||||
private int backBufferHeight = DefaultBackBufferHeight;
|
||||
|
||||
public event EventHandler<EventArgs> Disposed;
|
||||
public event EventHandler<EventArgs> DeviceCreated;
|
||||
public event EventHandler<EventArgs> DeviceDisposing;
|
||||
@ -194,7 +197,6 @@ namespace ANX.Framework
|
||||
{
|
||||
CreateDevice(graphicsDeviceInformation);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void ToggleFullScreen()
|
||||
@ -302,13 +304,19 @@ namespace ANX.Framework
|
||||
|
||||
public int PreferredBackBufferWidth
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
get
|
||||
{
|
||||
return this.backBufferHeight;
|
||||
}
|
||||
set { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public int PreferredBackBufferHeight
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
get
|
||||
{
|
||||
return this.backBufferWidth;
|
||||
}
|
||||
set { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
|
61
ANX.Framework/NonXNA/RenderSystem/INativeEffectPass.cs
Normal file
61
ANX.Framework/NonXNA/RenderSystem/INativeEffectPass.cs
Normal file
@ -0,0 +1,61 @@
|
||||
#region Using Statements
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ANX.Framework.Graphics;
|
||||
|
||||
#endregion // Using Statements
|
||||
|
||||
#region License
|
||||
|
||||
//
|
||||
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
|
||||
//
|
||||
// This file is released under the Ms-PL license.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Microsoft Public License (Ms-PL)
|
||||
//
|
||||
// This license governs use of the accompanying software. If you use the software, you accept this license.
|
||||
// If you do not accept the license, do not use the software.
|
||||
//
|
||||
// 1.Definitions
|
||||
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
|
||||
// here as under U.S. copyright law.
|
||||
// A "contribution" is the original software, or any additions or changes to the software.
|
||||
// A "contributor" is any person that distributes its contribution under this license.
|
||||
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
|
||||
//
|
||||
// 2.Grant of Rights
|
||||
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
|
||||
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
|
||||
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
|
||||
// or any derivative works that you create.
|
||||
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
|
||||
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
|
||||
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
|
||||
// in the software or derivative works of the contribution in the software.
|
||||
//
|
||||
// 3.Conditions and Limitations
|
||||
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
|
||||
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
|
||||
// patent license from such contributor to the software ends automatically.
|
||||
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
|
||||
// notices that are present in the software.
|
||||
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
|
||||
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
|
||||
// object code form, you may only do so under a license that complies with this license.
|
||||
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
|
||||
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
|
||||
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
|
||||
// particular purpose and non-infringement.
|
||||
|
||||
#endregion // License
|
||||
|
||||
namespace ANX.Framework.NonXNA
|
||||
{
|
||||
public interface INativeEffectPass
|
||||
{
|
||||
string Name { get; }
|
||||
}
|
||||
}
|
@ -1,5 +1,7 @@
|
||||
#region Using Statements
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ANX.Framework.Graphics;
|
||||
|
||||
#endregion // Using Statements
|
||||
|
||||
@ -55,5 +57,7 @@ namespace ANX.Framework.NonXNA
|
||||
public interface INativeEffectTechnique
|
||||
{
|
||||
string Name { get; }
|
||||
|
||||
IEnumerable<EffectPass> Passes { get; }
|
||||
}
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ using ANX.Framework.Graphics;
|
||||
|
||||
namespace ANX.Framework.NonXNA
|
||||
{
|
||||
public interface INativeGraphicsDevice
|
||||
public interface INativeGraphicsDevice : IDisposable
|
||||
{
|
||||
void Clear(ref Color color);
|
||||
void Clear(ClearOptions options, Vector4 color, float depth, int stencil);
|
||||
|
@ -69,8 +69,8 @@ namespace ANX.Framework
|
||||
|
||||
INativeBuffer CreateVertexBuffer(GraphicsDevice graphics, VertexDeclaration vertexDeclaration, int vertexCount, BufferUsage usage);
|
||||
|
||||
INativeEffect CreateEffect(GraphicsDevice graphics, Stream byteCode);
|
||||
INativeEffect CreateEffect(GraphicsDevice graphics, Stream vertexShaderByteCode, Stream pixelShaderByteCode);
|
||||
INativeEffect CreateEffect(GraphicsDevice graphics, Effect managedEffect, Stream byteCode);
|
||||
INativeEffect CreateEffect(GraphicsDevice graphics, Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode);
|
||||
|
||||
INativeBlendState CreateBlendState();
|
||||
INativeRasterizerState CreateRasterizerState();
|
||||
|
@ -31,11 +31,11 @@ using System.Runtime.InteropServices;
|
||||
//
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
[assembly: AssemblyVersion("0.4.23.*")]
|
||||
[assembly: AssemblyFileVersion("0.4.23.0")]
|
||||
[assembly: AssemblyVersion("0.4.24.*")]
|
||||
[assembly: AssemblyFileVersion("0.4.24.0")]
|
||||
|
||||
[assembly:InternalsVisibleTo("ANX.Framework.Windows.DX10")]
|
||||
[assembly:InternalsVisibleTo("ANX.Framework.Windows.DX11.1")]
|
||||
[assembly:InternalsVisibleTo("ANX.RenderSystem.Windows.DX11")]
|
||||
[assembly:InternalsVisibleTo("ANX.Framework.Windows.GL3")]
|
||||
[assembly:InternalsVisibleTo("ANX.Framework.Windows.Kinect")]
|
||||
[assembly:InternalsVisibleTo("ANX.Framework.Windows.XInput")]
|
||||
|
@ -71,6 +71,7 @@
|
||||
<Compile Include="FormatConverter.cs" />
|
||||
<Compile Include="GraphicsDeviceWindowsDX10.cs" />
|
||||
<Compile Include="IndexBuffer_DX10.cs" />
|
||||
<Compile Include="EffectPass_DX10.cs" />
|
||||
<Compile Include="NativeMethods.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="RasterizerState_DX10.cs" />
|
||||
|
@ -88,16 +88,16 @@ namespace ANX.Framework.Windows.DX10
|
||||
return new VertexBuffer_DX10(graphics, vertexDeclaration, vertexCount, usage);
|
||||
}
|
||||
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, ANX.Framework.Graphics.Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
{
|
||||
Effect_DX10 effect = new Effect_DX10(graphics, vertexShaderByteCode, pixelShaderByteCode);
|
||||
Effect_DX10 effect = new Effect_DX10(graphics, managedEffect, vertexShaderByteCode, pixelShaderByteCode);
|
||||
|
||||
return effect;
|
||||
}
|
||||
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, System.IO.Stream byteCode)
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, ANX.Framework.Graphics.Effect managedEffect, System.IO.Stream byteCode)
|
||||
{
|
||||
Effect_DX10 effect = new Effect_DX10(graphics, byteCode);
|
||||
Effect_DX10 effect = new Effect_DX10(graphics, managedEffect, byteCode);
|
||||
|
||||
return effect;
|
||||
}
|
||||
|
84
RenderSystems/ANX.Framework.Windows.DX10/EffectPass_DX10.cs
Normal file
84
RenderSystems/ANX.Framework.Windows.DX10/EffectPass_DX10.cs
Normal file
@ -0,0 +1,84 @@
|
||||
#region Using Statements
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using ANX.Framework.NonXNA;
|
||||
using SharpDX.Direct3D10;
|
||||
|
||||
#endregion // Using Statements
|
||||
|
||||
#region License
|
||||
|
||||
//
|
||||
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
|
||||
//
|
||||
// This file is released under the Ms-PL license.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Microsoft Public License (Ms-PL)
|
||||
//
|
||||
// This license governs use of the accompanying software. If you use the software, you accept this license.
|
||||
// If you do not accept the license, do not use the software.
|
||||
//
|
||||
// 1.Definitions
|
||||
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
|
||||
// here as under U.S. copyright law.
|
||||
// A "contribution" is the original software, or any additions or changes to the software.
|
||||
// A "contributor" is any person that distributes its contribution under this license.
|
||||
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
|
||||
//
|
||||
// 2.Grant of Rights
|
||||
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
|
||||
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
|
||||
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
|
||||
// or any derivative works that you create.
|
||||
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
|
||||
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
|
||||
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
|
||||
// in the software or derivative works of the contribution in the software.
|
||||
//
|
||||
// 3.Conditions and Limitations
|
||||
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
|
||||
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
|
||||
// patent license from such contributor to the software ends automatically.
|
||||
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
|
||||
// notices that are present in the software.
|
||||
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
|
||||
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
|
||||
// object code form, you may only do so under a license that complies with this license.
|
||||
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
|
||||
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
|
||||
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
|
||||
// particular purpose and non-infringement.
|
||||
|
||||
#endregion // License
|
||||
|
||||
namespace ANX.Framework.Windows.DX10
|
||||
{
|
||||
public class EffectPass_DX10 : INativeEffectPass
|
||||
{
|
||||
private EffectPass nativePass;
|
||||
|
||||
public EffectPass NativePass
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.nativePass;
|
||||
}
|
||||
internal set
|
||||
{
|
||||
this.nativePass = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return nativePass.Description.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -60,6 +60,17 @@ namespace ANX.Framework.Windows.DX10
|
||||
public class EffectTechnique_DX10 : INativeEffectTechnique
|
||||
{
|
||||
private EffectTechnique nativeTechnique;
|
||||
private ANX.Framework.Graphics.Effect parentEffect;
|
||||
|
||||
internal EffectTechnique_DX10(ANX.Framework.Graphics.Effect parentEffect)
|
||||
{
|
||||
if (parentEffect == null)
|
||||
{
|
||||
throw new ArgumentNullException("parentEffect");
|
||||
}
|
||||
|
||||
this.parentEffect = parentEffect;
|
||||
}
|
||||
|
||||
public EffectTechnique NativeTechnique
|
||||
{
|
||||
@ -80,5 +91,22 @@ namespace ANX.Framework.Windows.DX10
|
||||
return nativeTechnique.Description.Name;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public IEnumerable<Graphics.EffectPass> Passes
|
||||
{
|
||||
get
|
||||
{
|
||||
for (int i = 0; i < nativeTechnique.Description.PassCount; i++)
|
||||
{
|
||||
EffectPass_DX10 passDx10 = new EffectPass_DX10();
|
||||
passDx10.NativePass = nativeTechnique.GetPassByIndex(i);
|
||||
|
||||
Graphics.EffectPass pass = new Graphics.EffectPass(this.parentEffect);
|
||||
|
||||
yield return pass;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,12 +66,18 @@ namespace ANX.Framework.Windows.DX10
|
||||
private ShaderBytecode vertexShaderByteCode;
|
||||
private VertexShader vertexShader;
|
||||
private PixelShader pixelShader;
|
||||
|
||||
private ANX.Framework.Graphics.Effect managedEffect;
|
||||
private ShaderBytecode effectByteCode;
|
||||
private SharpDX.Direct3D10.Effect nativeEffect;
|
||||
|
||||
public Effect_DX10(GraphicsDevice device, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
public Effect_DX10(GraphicsDevice device, ANX.Framework.Graphics.Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
{
|
||||
if (this.managedEffect == null)
|
||||
{
|
||||
throw new ArgumentNullException("managedEffect");
|
||||
}
|
||||
this.managedEffect = managedEffect;
|
||||
|
||||
if (vertexShaderByteCode.CanSeek)
|
||||
{
|
||||
vertexShaderByteCode.Seek(0, SeekOrigin.Begin);
|
||||
@ -87,8 +93,14 @@ namespace ANX.Framework.Windows.DX10
|
||||
this.pixelShader = new PixelShader((SharpDX.Direct3D10.Device)device.NativeDevice, this.pixelShaderByteCode);
|
||||
}
|
||||
|
||||
public Effect_DX10(GraphicsDevice device, Stream effectByteCode)
|
||||
public Effect_DX10(GraphicsDevice device, ANX.Framework.Graphics.Effect managedEffect, Stream effectByteCode)
|
||||
{
|
||||
if (managedEffect == null)
|
||||
{
|
||||
throw new ArgumentNullException("managedEffect");
|
||||
}
|
||||
this.managedEffect = managedEffect;
|
||||
|
||||
if (effectByteCode.CanSeek)
|
||||
{
|
||||
effectByteCode.Seek(0, SeekOrigin.Begin);
|
||||
@ -213,11 +225,10 @@ namespace ANX.Framework.Windows.DX10
|
||||
{
|
||||
for (int i = 0; i < nativeEffect.Description.TechniqueCount; i++)
|
||||
{
|
||||
EffectTechnique_DX10 teqDx10 = new EffectTechnique_DX10();
|
||||
EffectTechnique_DX10 teqDx10 = new EffectTechnique_DX10(this.managedEffect);
|
||||
teqDx10.NativeTechnique = nativeEffect.GetTechniqueByIndex(i);
|
||||
|
||||
Graphics.EffectTechnique teq = new Graphics.EffectTechnique();
|
||||
teq.NativeTechnique = teqDx10;
|
||||
Graphics.EffectTechnique teq = new Graphics.EffectTechnique(this.managedEffect, teqDx10);
|
||||
|
||||
yield return teq;
|
||||
}
|
||||
|
@ -477,5 +477,10 @@ namespace ANX.Framework.Windows.DX10
|
||||
this.vSyncEnabled = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
//TODO: implement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ using System.Runtime.InteropServices;
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.7.3.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.3.0")]
|
||||
[assembly: AssemblyVersion("0.7.5.0")]
|
||||
[assembly: AssemblyFileVersion("0.7.5.0")]
|
||||
|
||||
[assembly: InternalsVisibleTo("ANX.Framework.ContentPipeline")]
|
||||
|
@ -90,15 +90,15 @@ namespace ANX.Framework.Windows.GL3
|
||||
#endregion
|
||||
|
||||
#region CreateEffect
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Stream byteCode)
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Effect managedEffect, Stream byteCode)
|
||||
{
|
||||
return new EffectGL3(byteCode);
|
||||
return new EffectGL3(managedEffect, byteCode);
|
||||
}
|
||||
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics,
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Effect managedEffect,
|
||||
Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
{
|
||||
return new EffectGL3(vertexShaderByteCode, pixelShaderByteCode);
|
||||
return new EffectGL3(managedEffect, vertexShaderByteCode, pixelShaderByteCode);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -72,6 +72,8 @@ namespace ANX.Framework.Windows.GL3
|
||||
/// The native shader handle.
|
||||
/// </summary>
|
||||
internal int programHandle;
|
||||
|
||||
private Effect managedEffect;
|
||||
#endregion
|
||||
|
||||
#region Public
|
||||
@ -83,12 +85,9 @@ namespace ANX.Framework.Windows.GL3
|
||||
List<EffectTechnique> techniques = new List<EffectTechnique>();
|
||||
|
||||
// TODO: dummy, fill with actual data.
|
||||
techniques.Add(new EffectTechnique()
|
||||
{
|
||||
NativeTechnique = new EffectTechniqueGL3(),
|
||||
});
|
||||
techniques.Add(new EffectTechnique(this.managedEffect, new EffectTechniqueGL3()));
|
||||
|
||||
return techniques;
|
||||
return techniques;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
@ -137,19 +136,19 @@ namespace ANX.Framework.Windows.GL3
|
||||
/// </summary>
|
||||
/// <param name="vertexShaderByteCode">The vertex shader code.</param>
|
||||
/// <param name="pixelShaderByteCode">The fragment shader code.</param>
|
||||
public EffectGL3(Stream vertexShaderByteCode,
|
||||
Stream pixelShaderByteCode)
|
||||
public EffectGL3(Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
{
|
||||
CreateShader(LoadShaderCode(vertexShaderByteCode),
|
||||
LoadShaderCode(pixelShaderByteCode));
|
||||
this.managedEffect = managedEffect;
|
||||
CreateShader(LoadShaderCode(vertexShaderByteCode), LoadShaderCode(pixelShaderByteCode));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a new effect instance of one streams.
|
||||
/// </summary>
|
||||
/// <param name="byteCode">The byte code of the shader.</param>
|
||||
public EffectGL3(Stream byteCode)
|
||||
public EffectGL3(Effect managedEffect, Stream byteCode)
|
||||
{
|
||||
this.managedEffect = managedEffect;
|
||||
string source = LoadShaderCode(byteCode);
|
||||
string[] parts = source.Split(new string[] { FragmentSeparator },
|
||||
StringSplitOptions.RemoveEmptyEntries);
|
||||
|
@ -74,5 +74,15 @@ namespace ANX.Framework.Windows.GL3
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
public System.Collections.Generic.IEnumerable<Graphics.EffectPass> Passes
|
||||
{
|
||||
get
|
||||
{
|
||||
//TODO: implement
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -406,5 +406,10 @@ namespace ANX.Framework.Windows.GL3
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
//TODO: implement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ using System.Runtime.InteropServices;
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.5.1.0")]
|
||||
[assembly: AssemblyFileVersion("0.5.1.0")]
|
||||
[assembly: AssemblyVersion("0.5.2.0")]
|
||||
[assembly: AssemblyFileVersion("0.5.2.0")]
|
||||
|
||||
[assembly: InternalsVisibleTo("ANX.Framework.ContentPipeline")]
|
||||
|
@ -8,8 +8,8 @@
|
||||
<ProjectGuid>{B30DE9C2-0926-46B6-8351-9AF276C472D5}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ANX.RenderSystem.Windows.DX11._1</RootNamespace>
|
||||
<AssemblyName>ANX.RenderSystem.Windows.DX11.1</AssemblyName>
|
||||
<RootNamespace>ANX.RenderSystem.Windows.DX11</RootNamespace>
|
||||
<AssemblyName>ANX.RenderSystem.Windows.DX11</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
|
@ -96,13 +96,13 @@ namespace ANX.RenderSystem.Windows.DX11
|
||||
return new VertexBuffer_DX11(graphics, vertexDeclaration, vertexCount, usage);
|
||||
}
|
||||
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Effect effect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
//return new Effect_DX11(graphics, vertexShaderByteCode, pixelShaderByteCode);
|
||||
}
|
||||
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, System.IO.Stream byteCode)
|
||||
public INativeEffect CreateEffect(GraphicsDevice graphics, Effect effect, System.IO.Stream byteCode)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
//return new Effect_DX11(graphics, byteCode);
|
||||
|
@ -648,5 +648,10 @@ namespace ANX.RenderSystem.Windows.DX11
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
//TODO: implement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -121,7 +121,8 @@ namespace VertexIndexBuffer
|
||||
{
|
||||
GraphicsDevice.Clear(Color.CornflowerBlue);
|
||||
|
||||
miniTriEffect.NativeEffect.Apply(GraphicsDevice); //TODO: this is not the right way to do that
|
||||
miniTriEffect.CurrentTechnique.Passes[0].Apply();
|
||||
|
||||
GraphicsDevice.SetVertexBuffer(vb);
|
||||
GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 6);
|
||||
|
||||
|
@ -263,6 +263,11 @@
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="create_packages" description="generates all type of packages">
|
||||
<call target="create_zip_packages" />
|
||||
<call target="create_msi_packages" />
|
||||
</target>
|
||||
|
||||
<target name="create_zip_packages" description="Generate zip package containing binaries" depends="build">
|
||||
<loadfile file="${project.anx.path}/Properties/AssemblyInfo.cs" property="assembly_version_file" />
|
||||
<regex pattern="AssemblyVersion\(.(?'assembly_version'\d+\.\d+.\d+)" input="${assembly_version_file}" />
|
||||
@ -278,7 +283,7 @@
|
||||
|
||||
</target>
|
||||
|
||||
<target name="create_msi_package" description="Create the installer package" depends="build">
|
||||
<target name="create_msi_packages" description="Create the installer package" depends="build">
|
||||
<loadfile file="${project.anx.path}/Properties/AssemblyInfo.cs" property="assembly_version_file" />
|
||||
<regex pattern="AssemblyVersion\(.(?'assembly_version'\d+\.\d+.\d+)" input="${assembly_version_file}" />
|
||||
<property name="build.output.installer_package" value="../package/${project.anx.name}-${build.configuration}-${assembly_version}.msi"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user