finished anx side handling of VertexBuffers in GraphicsDevice and finished VertexBufferBindings

This commit is contained in:
Glatzemann 2011-11-07 13:04:42 +00:00
parent e92ee6dfa7
commit 94e0509b44
9 changed files with 153 additions and 80 deletions

View File

@ -251,35 +251,32 @@ namespace ANX.Framework.Windows.DX10
}
}
public void SetVertexBuffer(VertexBuffer vertexBuffer, int vertexOffset)
{
if (vertexBuffer == null)
{
throw new ArgumentNullException("vertexBuffer");
}
this.currentVertexBuffer = vertexBuffer;
VertexBuffer_DX10 nativeVertexBuffer = vertexBuffer.NativeVertexBuffer as VertexBuffer_DX10;
if (nativeVertexBuffer != null)
{
device.InputAssembler.SetVertexBuffers(0, new SharpDX.Direct3D10.VertexBufferBinding(nativeVertexBuffer.NativeBuffer, vertexBuffer.VertexDeclaration.VertexStride, vertexOffset));
}
else
{
throw new Exception("couldn't fetch native DirectX10 VertexBuffer");
}
}
public void SetVertexBuffer(VertexBuffer vertexBuffer)
{
SetVertexBuffer(vertexBuffer, 0);
}
public void SetVertexBuffers(Graphics.VertexBufferBinding[] vertexBuffers)
{
throw new NotImplementedException();
if (vertexBuffers == null)
{
throw new ArgumentNullException("vertexBuffers");
}
this.currentVertexBuffer = vertexBuffers[0].VertexBuffer; //TODO: hmmmmm, not nice :-)
SharpDX.Direct3D10.VertexBufferBinding[] nativeVertexBufferBindings = new SharpDX.Direct3D10.VertexBufferBinding[vertexBuffers.Length];
for (int i = 0; i < vertexBuffers.Length; i++)
{
ANX.Framework.Graphics.VertexBufferBinding anxVertexBufferBinding = vertexBuffers[i];
VertexBuffer_DX10 nativeVertexBuffer = anxVertexBufferBinding.VertexBuffer.NativeVertexBuffer as VertexBuffer_DX10;
if (nativeVertexBuffer != null)
{
nativeVertexBufferBindings[i] = new SharpDX.Direct3D10.VertexBufferBinding(nativeVertexBuffer.NativeBuffer, anxVertexBufferBinding.VertexBuffer.VertexDeclaration.VertexStride, anxVertexBufferBinding.VertexOffset);
}
else
{
throw new Exception("couldn't fetch native DirectX10 VertexBuffer");
}
}
device.InputAssembler.SetVertexBuffers(0, nativeVertexBufferBindings);
}
public void SetViewport(Graphics.Viewport viewport)
@ -331,5 +328,21 @@ namespace ANX.Framework.Windows.DX10
return new InputElement(elementName, vertexElement.UsageIndex, elementFormat, vertexElement.Offset, 0);
}
public void SetRenderTarget(RenderTarget2D renderTarget)
{
throw new NotImplementedException();
}
public void SetRenderTarget(RenderTargetCube renderTarget, CubeMapFace cubeMapFace)
{
throw new NotImplementedException();
}
public void SetRenderTargets(params RenderTargetBinding[] renderTargets)
{
throw new NotImplementedException();
}
}
}

View File

@ -32,5 +32,5 @@ 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.0.0")]
[assembly: AssemblyFileVersion("0.7.0.0")]
[assembly: AssemblyVersion("0.7.1.0")]
[assembly: AssemblyFileVersion("0.7.1.0")]

View File

@ -168,16 +168,6 @@ namespace ANX.Framework.Windows.GL3
throw new NotImplementedException();
}
public void SetVertexBuffer(VertexBuffer vertexBuffer)
{
throw new NotImplementedException();
}
public void SetVertexBuffer(VertexBuffer vertexBuffer, int vertexOffset)
{
throw new NotImplementedException();
}
public void SetVertexBuffers(VertexBufferBinding[] vertexBuffers)
{
throw new NotImplementedException();
@ -227,5 +217,21 @@ namespace ANX.Framework.Windows.GL3
nativeContext.SwapBuffers();
}
#endregion
}
public void SetRenderTarget(RenderTarget2D renderTarget)
{
throw new NotImplementedException();
}
public void SetRenderTarget(RenderTargetCube renderTarget, CubeMapFace cubeMapFace)
{
throw new NotImplementedException();
}
public void SetRenderTargets(params RenderTargetBinding[] renderTargets)
{
throw new NotImplementedException();
}
}
}

View File

@ -32,5 +32,5 @@ 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.0.0")]
[assembly: AssemblyFileVersion("0.5.0.0")]
[assembly: AssemblyVersion("0.5.1.0")]
[assembly: AssemblyFileVersion("0.5.1.0")]

View File

@ -71,6 +71,7 @@ namespace ANX.Framework.Graphics
private PresentationParameters currentPresentationParameters;
private bool isDisposed;
private GraphicsProfile graphicsProfile;
private VertexBufferBinding[] currentVertexBufferBindings;
#endregion // Private Members
@ -174,32 +175,37 @@ namespace ANX.Framework.Graphics
public void SetVertexBuffer(VertexBuffer vertexBuffer)
{
nativeDevice.SetVertexBuffer(vertexBuffer);
VertexBufferBinding[] bindings = new VertexBufferBinding[] { new VertexBufferBinding(vertexBuffer) };
this.currentVertexBufferBindings = bindings;
this.nativeDevice.SetVertexBuffers(bindings);
}
public void SetVertexBuffer(VertexBuffer vertexBuffer, int vertexOffset)
{
nativeDevice.SetVertexBuffer(vertexBuffer, vertexOffset);
VertexBufferBinding[] bindings = new VertexBufferBinding[] { new VertexBufferBinding(vertexBuffer, vertexOffset) };
this.currentVertexBufferBindings = bindings;
this.nativeDevice.SetVertexBuffers(bindings);
}
public void SetVertexBuffers(Graphics.VertexBufferBinding[] vertexBuffers)
{
this.currentVertexBufferBindings = vertexBuffers;
nativeDevice.SetVertexBuffers(vertexBuffers);
}
public void SetRenderTarget(RenderTarget2D renderTarget)
{
throw new NotImplementedException();
nativeDevice.SetRenderTarget(renderTarget);
}
public void SetRenderTarget(RenderTargetCube renderTarget, CubeMapFace cubeMapFace)
{
throw new NotImplementedException();
nativeDevice.SetRenderTarget(renderTarget, cubeMapFace);
}
public void SetRenderTargets(params RenderTargetBinding[] renderTargets)
{
throw new NotImplementedException();
nativeDevice.SetRenderTargets(renderTargets);
}
public void GetBackBufferData<T>(Nullable<Rectangle> rect, T[] data, int startIndex, int elementCount) where T : struct
@ -219,7 +225,7 @@ namespace ANX.Framework.Graphics
public VertexBufferBinding[] GetVertexBuffers()
{
throw new NotImplementedException();
return this.currentVertexBufferBindings;
}
public RenderTargetBinding[] GetRenderTargets()

View File

@ -54,6 +54,60 @@ namespace ANX.Framework.Graphics
{
public struct VertexBufferBinding
{
#region Private Members
private VertexBuffer vertexBuffer;
private int instanceFrequency;
private int vertexOffset;
#endregion // Private Members
public VertexBufferBinding(VertexBuffer vertexBuffer)
{
this.vertexBuffer = vertexBuffer;
this.vertexOffset = 0;
this.instanceFrequency = 0;
}
public VertexBufferBinding(VertexBuffer vertexBuffer, int vertexOffset)
{
this.vertexBuffer = vertexBuffer;
this.vertexOffset = vertexOffset;
this.instanceFrequency = 0;
}
public VertexBufferBinding(VertexBuffer vertexBuffer, int vertexOffset, int instanceFrequency)
{
this.vertexBuffer = vertexBuffer;
this.vertexOffset = vertexOffset;
this.instanceFrequency = instanceFrequency;
}
public static implicit operator VertexBufferBinding(VertexBuffer vertexBuffer)
{
return new VertexBufferBinding(vertexBuffer);
}
public VertexBuffer VertexBuffer
{
get
{
return this.vertexBuffer;
}
}
public int InstanceFrequency
{
get
{
return this.instanceFrequency;
}
}
public int VertexOffset
{
get
{
return this.vertexOffset;
}
}
}
}

View File

@ -63,14 +63,20 @@ namespace ANX.Framework.NonXNA
void DrawPrimitives(PrimitiveType primitiveType, int vertexOffset, int primitiveCount);
void SetVertexBuffer(VertexBuffer vertexBuffer);
//void SetVertexBuffer(VertexBuffer vertexBuffer);
void SetVertexBuffer(VertexBuffer vertexBuffer, int vertexOffset);
//void SetVertexBuffer(VertexBuffer vertexBuffer, int vertexOffset);
void SetVertexBuffers(VertexBufferBinding[] vertexBuffers);
void SetIndexBuffer(IndexBuffer indexBuffer);
void SetViewport(Viewport viewport);
void SetRenderTarget(RenderTarget2D renderTarget);
void SetRenderTarget(RenderTargetCube renderTarget, CubeMapFace cubeMapFace);
void SetRenderTargets(params RenderTargetBinding[] renderTargets);
}
}

View File

@ -245,34 +245,6 @@ namespace ANX.RenderSystem.Windows.DX11_1
//}
}
public void SetVertexBuffer(VertexBuffer vertexBuffer)
{
if (vertexBuffer == null)
{
throw new ArgumentNullException("vertexBuffer");
}
throw new NotImplementedException();
//this.currentVertexBuffer = vertexBuffer;
//VertexBuffer_DX10 nativeVertexBuffer = vertexBuffer.NativeVertexBuffer as VertexBuffer_DX10;
//if (nativeVertexBuffer != null)
//{
// device.InputAssembler.SetVertexBuffers(0, new SharpDX.Direct3D10.VertexBufferBinding(nativeVertexBuffer.NativeBuffer, vertexBuffer.VertexDeclaration.VertexStride, 0));
//}
//else
//{
// throw new Exception("couldn't fetch native DirectX10 VertexBuffer");
//}
}
public void SetVertexBuffer(VertexBuffer vertexBuffer, int vertexOffset)
{
throw new NotImplementedException();
}
public void SetVertexBuffers(ANX.Framework.Graphics.VertexBufferBinding[] vertexBuffers)
{
throw new NotImplementedException();
@ -617,5 +589,21 @@ namespace ANX.RenderSystem.Windows.DX11_1
return Comparison.Always;
}
public void SetRenderTarget(Framework.Graphics.RenderTarget2D renderTarget)
{
throw new NotImplementedException();
}
public void SetRenderTarget(Framework.Graphics.RenderTargetCube renderTarget, Framework.Graphics.CubeMapFace cubeMapFace)
{
throw new NotImplementedException();
}
public void SetRenderTargets(params Framework.Graphics.RenderTargetBinding[] renderTargets)
{
throw new NotImplementedException();
}
}
}

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Buildnummer
// Revision
//
[assembly: AssemblyVersion("0.1.0.0")]
[assembly: AssemblyFileVersion("0.1.0.0")]
[assembly: AssemblyVersion("0.1.1.0")]
[assembly: AssemblyFileVersion("0.1.1.0")]