diff --git a/InputSystems/ANX.InputDevices.Windows.ModernUI/Keyboard.cs b/InputSystems/ANX.InputDevices.Windows.ModernUI/Keyboard.cs
old mode 100755
new mode 100644
diff --git a/InputSystems/ANX.InputSystem.Recording/RecordingGamePad.cs b/InputSystems/ANX.InputSystem.Recording/RecordingGamePad.cs
index da8c9d07..f462c34d 100644
--- a/InputSystems/ANX.InputSystem.Recording/RecordingGamePad.cs
+++ b/InputSystems/ANX.InputSystem.Recording/RecordingGamePad.cs
@@ -64,7 +64,19 @@ namespace ANX.InputSystem.Recording
public GamePadState GetState(PlayerIndex playerIndex)
{
- throw new NotImplementedException();
+ switch (RecordingState)
+ {
+ case Recording.RecordingState.None:
+ return realGamePad.GetState(playerIndex);
+ case Recording.RecordingState.Playback:
+ return ReadGamePadState(playerIndex);
+ case Recording.RecordingState.Recording:
+ var state = realGamePad.GetState(playerIndex);
+ WriteGamePadState(state, playerIndex);
+ return state;
+ default:
+ throw new InvalidOperationException("The recordingState is invalid!");
+ }
}
public GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode)
@@ -122,5 +134,15 @@ namespace ANX.InputSystem.Recording
{
throw new NotImplementedException();
}
+
+ private GamePadState ReadGamePadState(PlayerIndex playerIndex)
+ {
+ throw new NotImplementedException();
+ }
+
+ private void WriteGamePadState(GamePadState state, PlayerIndex playerIndex)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/RenderSystems/ANX.Framework.GL3/EffectGL3.cs b/RenderSystems/ANX.Framework.GL3/EffectGL3.cs
index 5fbf5e38..73fa51f6 100644
--- a/RenderSystems/ANX.Framework.GL3/EffectGL3.cs
+++ b/RenderSystems/ANX.Framework.GL3/EffectGL3.cs
@@ -13,280 +13,292 @@ using ANX.Framework.Content.Pipeline.Helpers.GL3;
namespace ANX.RenderSystem.GL3
{
- ///
- /// Native OpenGL Effect implementation.
- /// http://wiki.delphigl.com/index.php/Tutorial_glsl
- ///
- public class EffectGL3 : INativeEffect
- {
- #region Private
- private Effect managedEffect;
- private ShaderData shaderData;
- private List parameters;
- private List techniques;
- internal bool IsDisposed;
+ ///
+ /// Native OpenGL Effect implementation.
+ /// http://wiki.delphigl.com/index.php/Tutorial_glsl
+ ///
+ public class EffectGL3 : INativeEffect
+ {
+ #region Private
+ private Effect managedEffect;
+ private ShaderData shaderData;
+ private List parameters;
+ private List techniques;
+ internal bool IsDisposed;
- internal EffectTechniqueGL3 CurrentTechnique
- {
- get
- {
- if (managedEffect.CurrentTechnique == null)
- return null;
+ internal EffectTechniqueGL3 CurrentTechnique
+ {
+ get
+ {
+ if (managedEffect.CurrentTechnique == null)
+ return null;
- return managedEffect.CurrentTechnique.NativeTechnique as EffectTechniqueGL3;
- }
- }
- #endregion
+ return managedEffect.CurrentTechnique.NativeTechnique as EffectTechniqueGL3;
+ }
+ }
+ #endregion
- #region Public
- #region Techniques
- public IEnumerable Techniques
- {
- get
- {
- if (techniques.Count == 0)
- {
- Compile();
- }
+ #region Public
+ #region Techniques
+ public IEnumerable Techniques
+ {
+ get
+ {
+ if (techniques.Count == 0)
+ {
+ Compile();
+ }
- return techniques;
- }
- }
- #endregion
+ return techniques;
+ }
+ }
+ #endregion
- #region Parameters
- public IEnumerable Parameters
- {
- get
- {
- if (techniques.Count == 0)
- {
- Compile();
- }
+ #region Parameters
+ public IEnumerable Parameters
+ {
+ get
+ {
+ if (techniques.Count == 0)
+ {
+ Compile();
+ }
- return parameters;
- }
- }
- #endregion
- #endregion
+ return parameters;
+ }
+ }
+ #endregion
+ #endregion
- #region Constructor
- ///
- /// Private helper constructor for the basic initialization.
- ///
- private EffectGL3(Effect setManagedEffect)
- {
- GraphicsResourceManager.UpdateResource(this, true);
+ #region Constructor
+ ///
+ /// Private helper constructor for the basic initialization.
+ ///
+ private EffectGL3(Effect setManagedEffect)
+ {
+ GraphicsResourceManager.UpdateResource(this, true);
- parameters = new List();
- techniques = new List();
- managedEffect = setManagedEffect;
- }
+ parameters = new List();
+ techniques = new List();
+ managedEffect = setManagedEffect;
+ }
- ~EffectGL3()
- {
- GraphicsResourceManager.UpdateResource(this, false);
- }
+ ~EffectGL3()
+ {
+ GraphicsResourceManager.UpdateResource(this, false);
+ }
- ///
- /// Create a new effect instance of separate streams.
- ///
- /// The vertex shader code.
- /// The fragment shader code.
- public EffectGL3(Effect setManagedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
- : this(setManagedEffect)
- {
+ ///
+ /// Create a new effect instance of separate streams.
+ ///
+ /// The vertex shader code.
+ /// The fragment shader code.
+ public EffectGL3(Effect setManagedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
+ : this(setManagedEffect)
+ {
// TODO: this is probably not right!
- throw new NotImplementedException("TODO: implement effect constructor with vertex and fragment streams, check HOWTO...");
- //CreateShader(ShaderHelper.LoadShaderCode(vertexShaderByteCode),
- // ShaderHelper.LoadShaderCode(pixelShaderByteCode));
- }
+ throw new NotImplementedException("TODO: implement effect constructor with vertex and fragment streams, check HOWTO...");
+ //CreateShader(ShaderHelper.LoadShaderCode(vertexShaderByteCode),
+ // ShaderHelper.LoadShaderCode(pixelShaderByteCode));
+ }
- ///
- /// Create a new effect instance of one streams.
- ///
- /// The byte code of the shader.
- public EffectGL3(Effect setManagedEffect, Stream byteCode)
- : this(setManagedEffect)
- {
- string source = ShaderHelper.LoadShaderCode(byteCode);
- shaderData = ShaderHelper.ParseShaderCode(source);
- }
- #endregion
+ ///
+ /// Create a new effect instance of one streams.
+ ///
+ /// The byte code of the shader.
+ public EffectGL3(Effect setManagedEffect, Stream byteCode)
+ : this(setManagedEffect)
+ {
+ string source = ShaderHelper.LoadShaderCode(byteCode);
+ shaderData = ShaderHelper.ParseShaderCode(source);
+ }
+ #endregion
- #region RecreateData
- internal void RecreateData()
- {
- Compile();
- }
- #endregion
+ #region RecreateData
+ internal void RecreateData()
+ {
+ Compile();
+ }
+ #endregion
- #region Compile
- private void Compile()
- {
- parameters.Clear();
- techniques.Clear();
- Dictionary vertexShaders = new Dictionary();
- Dictionary fragmentShaders = new Dictionary();
- List parameterNames = new List();
+ #region Compile
+ private void Compile()
+ {
+ parameters.Clear();
+ techniques.Clear();
+ Dictionary vertexShaders = new Dictionary();
+ Dictionary fragmentShaders = new Dictionary();
+ List parameterNames = new List();
- #region Compile vertex shaders
- foreach (string vertexName in shaderData.VertexShaderCodes.Keys)
- {
- string vertexSource = shaderData.VertexGlobalCode + shaderData.VertexShaderCodes[vertexName];
+ #region Compile vertex shaders
+ foreach (string vertexName in shaderData.VertexShaderCodes.Keys)
+ {
+ string vertexSource = shaderData.VertexGlobalCode + shaderData.VertexShaderCodes[vertexName];
- int vertexShader = GL.CreateShader(ShaderType.VertexShader);
- string vertexError = CompileShader(vertexShader, vertexSource);
- if (String.IsNullOrEmpty(vertexError) == false)
- throw new InvalidDataException("Failed to compile the vertex shader '" + vertexName + "' cause of: " +
- vertexError);
+ int vertexShader = GL.CreateShader(ShaderType.VertexShader);
+ string vertexError = CompileShader(vertexShader, vertexSource);
+ if (String.IsNullOrEmpty(vertexError) == false)
+ throw new InvalidDataException("Failed to compile the vertex shader '" + vertexName + "' cause of: " +
+ vertexError);
- vertexShaders.Add(vertexName, vertexShader);
- }
- #endregion
+ vertexShaders.Add(vertexName, vertexShader);
+ }
+ #endregion
- #region Compile fragment shaders
- foreach (string fragmentName in shaderData.FragmentShaderCodes.Keys)
- {
- string fragmentSource = shaderData.FragmentGlobalCode + shaderData.FragmentShaderCodes[fragmentName];
+ #region Compile fragment shaders
+ foreach (string fragmentName in shaderData.FragmentShaderCodes.Keys)
+ {
+ string fragmentSource = shaderData.FragmentGlobalCode + shaderData.FragmentShaderCodes[fragmentName];
- int fragmentShader = GL.CreateShader(ShaderType.FragmentShader);
- string fragmentError = CompileShader(fragmentShader, fragmentSource);
- if (String.IsNullOrEmpty(fragmentError) == false)
- throw new InvalidDataException("Failed to compile the fragment shader '" + fragmentName + "' cause of: " +
- fragmentError);
+ int fragmentShader = GL.CreateShader(ShaderType.FragmentShader);
+ string fragmentError = CompileShader(fragmentShader, fragmentSource);
+ if (String.IsNullOrEmpty(fragmentError) == false)
+ throw new InvalidDataException("Failed to compile the fragment shader '" + fragmentName + "' cause of: " +
+ fragmentError);
- fragmentShaders.Add(fragmentName, fragmentShader);
- }
- #endregion
+ fragmentShaders.Add(fragmentName, fragmentShader);
+ }
+ #endregion
- #region Compile programs
- foreach (string programName in shaderData.Techniques.Keys)
- {
- string vertexName = shaderData.Techniques[programName].Key;
- string fragmentName = shaderData.Techniques[programName].Value;
+ #region Compile programs
+ foreach (string programName in shaderData.Techniques.Keys)
+ {
+ string vertexName = shaderData.Techniques[programName].Key;
+ string fragmentName = shaderData.Techniques[programName].Value;
- int programHandle = GL.CreateProgram();
- ErrorHelper.Check("CreateProgram");
- GL.AttachShader(programHandle, vertexShaders[vertexName]);
- ErrorHelper.Check("AttachShader vertexShader");
- GL.AttachShader(programHandle, fragmentShaders[fragmentName]);
- ErrorHelper.Check("AttachShader fragmentShader");
- GL.LinkProgram(programHandle);
+ int vertexShaderHandle = vertexShaders[vertexName];
+ int fragmentShaderHandle = fragmentShaders[fragmentName];
- int result;
- GL.GetProgram(programHandle, ProgramParameter.LinkStatus, out result);
- if (result == 0)
- {
- string programError;
- GL.GetProgramInfoLog(programHandle, out programError);
- throw new InvalidDataException("Failed to link the shader program '" +
- programName + "' because of: " + programError);
- }
+ int programHandle = GL.CreateProgram();
+ ErrorHelper.Check("CreateProgram");
+ GL.AttachShader(programHandle, vertexShaderHandle);
+ ErrorHelper.Check("AttachShader vertexShader");
+ GL.AttachShader(programHandle, fragmentShaderHandle);
+ ErrorHelper.Check("AttachShader fragmentShader");
+ GL.LinkProgram(programHandle);
- EffectTechniqueGL3 technique = new EffectTechniqueGL3(managedEffect, programName, programHandle);
- techniques.Add(new EffectTechnique(managedEffect, technique));
- AddParametersFrom(programHandle, parameterNames, technique);
- }
- #endregion
- }
- #endregion
+ int result;
+ GL.GetProgram(programHandle, GetProgramParameterName.LinkStatus, out result);
+ if (result == 0)
+ {
+ string programError;
+ GL.GetProgramInfoLog(programHandle, out programError);
+ throw new InvalidDataException("Failed to link the shader program '" +
+ programName + "' because of: " + programError);
+ }
+
+ //After the program has been linked, the shaders don't have to be attached anymore as they won't do anything.
+ //We also save some memory because the shader source code gets freed by this.
+ GL.DetachShader(programHandle, vertexShaderHandle);
+ GL.DetachShader(programHandle, fragmentShaderHandle);
- #region CompileShader
- private string CompileShader(int shader, string source)
- {
- GL.ShaderSource(shader, source);
- GL.CompileShader(shader);
+ GL.DeleteShader(vertexShaderHandle);
+ GL.DeleteShader(fragmentShaderHandle);
- int result;
- GL.GetShader(shader, ShaderParameter.CompileStatus, out result);
- if (result == 0)
- {
- string error = "";
- GL.GetShaderInfoLog(shader, out error);
+ EffectTechniqueGL3 technique = new EffectTechniqueGL3(managedEffect, programName, programHandle);
+ techniques.Add(new EffectTechnique(managedEffect, technique));
+ AddParametersFrom(programHandle, parameterNames, technique);
+ }
+ #endregion
+ }
+ #endregion
- GL.DeleteShader(shader);
+ #region CompileShader
+ private string CompileShader(int shader, string source)
+ {
+ GL.ShaderSource(shader, source);
+ GL.CompileShader(shader);
- return error;
- }
+ int result;
+ GL.GetShader(shader, ShaderParameter.CompileStatus, out result);
+ if (result == 0)
+ {
+ string error = "";
+ GL.GetShaderInfoLog(shader, out error);
- return null;
- }
- #endregion
+ GL.DeleteShader(shader);
- #region AddParametersFrom
- private void AddParametersFrom(int programHandle, List parameterNames, EffectTechniqueGL3 technique)
- {
- int uniformCount;
- GL.GetProgram(programHandle, ProgramParameter.ActiveUniforms, out uniformCount);
- ErrorHelper.Check("GetProgram ActiveUniforms");
+ return error;
+ }
- for (int index = 0; index < uniformCount; index++)
- {
- string name = GL.GetActiveUniformName(programHandle, index);
- ErrorHelper.Check("GetActiveUniformName name=" + name);
+ return null;
+ }
+ #endregion
- if (parameterNames.Contains(name) == false)
- {
- parameterNames.Add(name);
- int uniformIndex = GL.GetUniformLocation(programHandle, name);
- ErrorHelper.Check("GetUniformLocation name=" + name + " uniformIndex=" + uniformIndex);
- parameters.Add(new EffectParameter(new EffectParameterGL3(technique, name, uniformIndex)));
- }
- }
- }
- #endregion
+ #region AddParametersFrom
+ private void AddParametersFrom(int programHandle, List parameterNames, EffectTechniqueGL3 technique)
+ {
+ int uniformCount;
+ GL.GetProgram(programHandle, GetProgramParameterName.ActiveUniforms, out uniformCount);
+ ErrorHelper.Check("GetProgram ActiveUniforms");
- #region Apply
- public void Apply(GraphicsDevice graphicsDevice)
- {
- GL.UseProgram(CurrentTechnique.programHandle);
- GraphicsDeviceWindowsGL3.activeEffect = this;
- ErrorHelper.Check("UseProgram");
- }
- #endregion
+ for (int index = 0; index < uniformCount; index++)
+ {
+ string name = GL.GetActiveUniformName(programHandle, index);
+ ErrorHelper.Check("GetActiveUniformName name=" + name);
- #region Dispose
- ///
- /// Dispose the native shader data.
- ///
- public void Dispose()
- {
- if (IsDisposed == false)
- {
- IsDisposed = true;
- DisposeResource();
- }
- }
+ if (parameterNames.Contains(name) == false)
+ {
+ parameterNames.Add(name);
+ int uniformIndex = GL.GetUniformLocation(programHandle, name);
+ ErrorHelper.Check("GetUniformLocation name=" + name + " uniformIndex=" + uniformIndex);
+ parameters.Add(new EffectParameter(new EffectParameterGL3(technique, name, uniformIndex)));
+ }
+ }
+ }
+ #endregion
- internal void DisposeResource()
- {
- if (GraphicsDeviceWindowsGL3.IsContextCurrent == false)
- {
- return;
- }
+ #region Apply
+ public void Apply(GraphicsDevice graphicsDevice)
+ {
+ GL.UseProgram(CurrentTechnique.programHandle);
+ GraphicsDeviceWindowsGL3.activeEffect = this;
+ ErrorHelper.Check("UseProgram");
+ }
+ #endregion
- foreach (EffectTechnique technique in techniques)
- {
- int programHandle =
- (technique.NativeTechnique as EffectTechniqueGL3).programHandle;
+ #region Dispose
+ ///
+ /// Dispose the native shader data.
+ ///
+ public void Dispose()
+ {
+ if (IsDisposed == false)
+ {
+ IsDisposed = true;
+ DisposeResource();
+ }
+ }
- GL.DeleteProgram(programHandle);
- ErrorHelper.Check("DeleteProgram");
+ internal void DisposeResource()
+ {
+ if (GraphicsDeviceWindowsGL3.IsContextCurrent == false)
+ {
+ return;
+ }
- int result;
- GL.GetProgram(programHandle, ProgramParameter.DeleteStatus, out result);
- if (result == 0)
- {
- string deleteError;
- GL.GetProgramInfoLog(programHandle, out deleteError);
- throw new Exception("Failed to delete the shader program '" +
- technique.Name + "' because of: " + deleteError);
- }
- }
- techniques.Clear();
- parameters.Clear();
- }
- #endregion
- }
+ foreach (EffectTechnique technique in techniques)
+ {
+ int programHandle =
+ (technique.NativeTechnique as EffectTechniqueGL3).programHandle;
+
+ GL.DeleteProgram(programHandle);
+ ErrorHelper.Check("DeleteProgram");
+
+ int result;
+ GL.GetProgram(programHandle, GetProgramParameterName.DeleteStatus, out result);
+ //If it isn't deleted, it means it's somehow still in use.
+ if (result == 1)
+ {
+ string deleteError;
+ GL.GetProgramInfoLog(programHandle, out deleteError);
+ throw new Exception("Failed to delete the shader program '" +
+ technique.Name + "' because of: " + deleteError);
+ }
+ }
+ techniques.Clear();
+ parameters.Clear();
+ }
+ #endregion
+ }
}
diff --git a/RenderSystems/ANX.Framework.GL3/EffectTechniqueGL3.cs b/RenderSystems/ANX.Framework.GL3/EffectTechniqueGL3.cs
index e945b7e2..10817bb8 100644
--- a/RenderSystems/ANX.Framework.GL3/EffectTechniqueGL3.cs
+++ b/RenderSystems/ANX.Framework.GL3/EffectTechniqueGL3.cs
@@ -74,7 +74,7 @@ namespace ANX.RenderSystem.GL3
private void GetAttributes()
{
int attributeCount;
- GL.GetProgram(programHandle, ProgramParameter.ActiveAttributes,
+ GL.GetProgram(programHandle, GetProgramParameterName.ActiveAttributes,
out attributeCount);
activeAttributes = new ShaderAttributeGL3[attributeCount];
for (int index = 0; index < attributeCount; index++)
diff --git a/RenderSystems/ANX.Framework.GL3/GraphicsDeviceWindowsGL3.cs b/RenderSystems/ANX.Framework.GL3/GraphicsDeviceWindowsGL3.cs
index e040c345..dc2ff753 100644
--- a/RenderSystems/ANX.Framework.GL3/GraphicsDeviceWindowsGL3.cs
+++ b/RenderSystems/ANX.Framework.GL3/GraphicsDeviceWindowsGL3.cs
@@ -113,7 +113,7 @@ namespace ANX.RenderSystem.GL3
var colorFormat = DatatypesMapping.SurfaceToColorFormat(presentationParameters.BackBufferFormat);
graphicsMode = new GraphicsMode(colorFormat, depth, stencil, presentationParameters.MultiSampleCount);
- CreateWindowInfo(presentationParameters.DeviceWindowHandle, graphicsMode.Index.Value);
+ CreateWindowInfo(presentationParameters.DeviceWindowHandle, graphicsMode.Index);
nativeContext = new GraphicsContext(graphicsMode, nativeWindowInfo);
nativeContext.MakeCurrent(nativeWindowInfo);
@@ -143,12 +143,12 @@ namespace ANX.RenderSystem.GL3
#endregion
#region CreateWindowInfo
- private void CreateWindowInfo(IntPtr windowHandle, IntPtr graphicsModeHandle)
+ private void CreateWindowInfo(IntPtr windowHandle, IntPtr? graphicsModeHandle)
{
if (OpenTK.Configuration.RunningOnWindows)
nativeWindowInfo = Utilities.CreateWindowsWindowInfo(windowHandle);
else if (OpenTK.Configuration.RunningOnX11)
- nativeWindowInfo = LinuxInterop.CreateX11WindowInfo(windowHandle, graphicsModeHandle);
+ nativeWindowInfo = LinuxInterop.CreateX11WindowInfo(windowHandle, graphicsModeHandle.Value);
else if (OpenTK.Configuration.RunningOnMacOS)
nativeWindowInfo = Utilities.CreateMacOSCarbonWindowInfo(windowHandle, false, true);
else
diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX11/ANX.RenderSystem.Windows.DX11.csproj b/RenderSystems/ANX.RenderSystem.Windows.DX11/ANX.RenderSystem.Windows.DX11.csproj
index a7a00b36..3a0120ae 100644
--- a/RenderSystems/ANX.RenderSystem.Windows.DX11/ANX.RenderSystem.Windows.DX11.csproj
+++ b/RenderSystems/ANX.RenderSystem.Windows.DX11/ANX.RenderSystem.Windows.DX11.csproj
@@ -45,25 +45,25 @@
-
+
False
- ..\..\packages\SharpDX.2.4.2\lib\net40\SharpDX.dll
+ $(SharpDXPackageBinDir)\SharpDX.dll
-
+
False
- ..\..\packages\SharpDX.D3DCompiler.2.4.2\lib\net40\SharpDX.D3DCompiler.dll
+ $(SharpDXPackageBinDir)\SharpDX.D3DCompiler.dll
-
+
False
- ..\..\packages\SharpDX.Direct3D11.2.4.2\lib\net40\SharpDX.Direct3D11.dll
+ $(SharpDXPackageBinDir)\SharpDX.Direct3D11.dll
-
+
False
- ..\..\packages\SharpDX.Direct3D11.Effects.2.4.2\lib\net40\SharpDX.Direct3D11.Effects.dll
+ $(SharpDXPackageBinDir)\SharpDX.Direct3D11.Effects.dll
-
+
False
- ..\..\packages\SharpDX.DXGI.2.4.2\lib\net40\SharpDX.DXGI.dll
+ $(SharpDXPackageBinDir)\SharpDX.DXGI.dll
@@ -97,7 +97,6 @@
-
@@ -105,10 +104,23 @@
-
-
+
+ sharpdx_direct3d11_effects_x64.dll
+ PreserveNewest
+
+
+ sharpdx_direct3d11_effects_x86.dll
+ PreserveNewest
+
+
+
+
+ Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Aktivieren Sie die Wiederherstellung von NuGet-Paketen, um die fehlende Datei herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".
+
+
+