- fixed a issue with DrawIndexedPrimitives in DX10, DX11 and DX11.1 RenderSystems. (part of issue #531)
This commit is contained in:
parent
ae61d9850c
commit
825ed2b10c
@ -121,11 +121,14 @@ namespace ANX.Framework.Graphics
|
||||
#endregion // Present
|
||||
|
||||
#region DrawPrimitives & DrawIndexedPrimitives
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices,
|
||||
int startIndex, int primitiveCount)
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices, int startIndex, int primitiveCount)
|
||||
{
|
||||
NativeDevice.DrawIndexedPrimitives(primitiveType, baseVertex, minVertexIndex, numVertices, startIndex,
|
||||
primitiveCount);
|
||||
if (this.indexBuffer == null)
|
||||
{
|
||||
throw new InvalidOperationException("you have to set a index buffer before you can draw using DrawIndexedPrimitives");
|
||||
}
|
||||
|
||||
NativeDevice.DrawIndexedPrimitives(primitiveType, baseVertex, minVertexIndex, numVertices, startIndex, primitiveCount, this.indexBuffer);
|
||||
}
|
||||
|
||||
public void DrawPrimitives(PrimitiveType primitiveType, int startVertex, int primitiveCount)
|
||||
@ -397,11 +400,7 @@ namespace ANX.Framework.Graphics
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this.indexBuffer != value)
|
||||
{
|
||||
this.indexBuffer = value;
|
||||
NativeDevice.SetIndexBuffer(this.indexBuffer);
|
||||
}
|
||||
this.indexBuffer = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,8 +14,7 @@ namespace ANX.Framework.NonXNA
|
||||
|
||||
void Present();
|
||||
|
||||
void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices,
|
||||
int startIndex, int primitiveCount);
|
||||
void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices, int startIndex, int primitiveCount, IndexBuffer indexBuffer);
|
||||
|
||||
void DrawInstancedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices,
|
||||
int startIndex, int primitiveCount, int instanceCount);
|
||||
|
@ -241,7 +241,7 @@ namespace ANX.RenderSystem.GL3
|
||||
|
||||
#region DrawIndexedPrimitives
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices,
|
||||
int startIndex, int primitiveCount)
|
||||
int startIndex, int primitiveCount, IndexBuffer indexBuffer)
|
||||
{
|
||||
// TODO: baseVertex, minVertexIndex, numVertices, startIndex
|
||||
DrawElementsType elementsType = boundIndexBuffer.elementSize == IndexElementSize.SixteenBits ?
|
||||
|
@ -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.12.0")]
|
||||
[assembly: AssemblyFileVersion("0.5.12.0")]
|
||||
[assembly: AssemblyVersion("0.5.13.*")]
|
||||
[assembly: AssemblyFileVersion("0.5.13.0")]
|
||||
|
||||
[assembly: InternalsVisibleTo("ANX.Framework.ContentPipeline")]
|
||||
|
@ -195,7 +195,7 @@ namespace ANX.RenderSystem.Windows.DX10
|
||||
#endregion
|
||||
|
||||
#region DrawIndexedPrimitives
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices, int startIndex, int primitiveCount)
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices, int startIndex, int primitiveCount, IndexBuffer indexBuffer)
|
||||
{
|
||||
Dx10.EffectTechnique technique = SetupEffectForDraw();
|
||||
int vertexCount = DxFormatConverter.CalculateVertexCount(primitiveType, primitiveCount);
|
||||
@ -204,6 +204,11 @@ namespace ANX.RenderSystem.Windows.DX10
|
||||
nativeDevice.Rasterizer.SetViewports(currentViewport);
|
||||
nativeDevice.OutputMerger.SetTargets(this.depthStencilView, this.renderView);
|
||||
|
||||
if (indexBuffer != null)
|
||||
{
|
||||
SetIndexBuffer(indexBuffer);
|
||||
}
|
||||
|
||||
for (int i = 0; i < technique.Description.PassCount; ++i)
|
||||
{
|
||||
technique.GetPassByIndex(i).Apply();
|
||||
@ -273,7 +278,7 @@ namespace ANX.RenderSystem.Windows.DX10
|
||||
|
||||
nativeDevice.InputAssembler.SetIndexBuffer(idx10.NativeBuffer, DxFormatConverter.Translate(indexElementSize), 0);
|
||||
|
||||
DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount);
|
||||
DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount, null);
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -352,8 +357,7 @@ namespace ANX.RenderSystem.Windows.DX10
|
||||
|
||||
if (nativeIndexBuffer != null)
|
||||
{
|
||||
nativeDevice.InputAssembler.SetIndexBuffer(nativeIndexBuffer.NativeBuffer,
|
||||
DxFormatConverter.Translate(indexBuffer.IndexElementSize), 0);
|
||||
nativeDevice.InputAssembler.SetIndexBuffer(nativeIndexBuffer.NativeBuffer, DxFormatConverter.Translate(indexBuffer.IndexElementSize), 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -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.18.*")]
|
||||
[assembly: AssemblyFileVersion("0.7.18.0")]
|
||||
[assembly: AssemblyVersion("0.7.19.*")]
|
||||
[assembly: AssemblyFileVersion("0.7.19.0")]
|
||||
|
||||
[assembly: InternalsVisibleTo("ANX.Framework.ContentPipeline")]
|
||||
|
@ -199,7 +199,7 @@ namespace ANX.RenderSystem.Windows.DX11
|
||||
#endregion
|
||||
|
||||
#region DrawIndexedPrimitives
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices, int startIndex, int primitiveCount)
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex, int minVertexIndex, int numVertices, int startIndex, int primitiveCount, IndexBuffer indexBuffer)
|
||||
{
|
||||
SharpDX.Direct3D11.EffectTechnique technique = SetupEffectForDraw();
|
||||
int vertexCount = DxFormatConverter.CalculateVertexCount(primitiveType, primitiveCount);
|
||||
@ -208,6 +208,11 @@ namespace ANX.RenderSystem.Windows.DX11
|
||||
nativeDevice.Rasterizer.SetViewports(currentViewport);
|
||||
nativeDevice.OutputMerger.SetTargets(this.depthStencilView, this.renderView);
|
||||
|
||||
if (indexBuffer != null)
|
||||
{
|
||||
SetIndexBuffer(indexBuffer);
|
||||
}
|
||||
|
||||
for (int i = 0; i < technique.Description.PassCount; ++i)
|
||||
{
|
||||
technique.GetPassByIndex(i).Apply(nativeDevice);
|
||||
@ -282,7 +287,7 @@ namespace ANX.RenderSystem.Windows.DX11
|
||||
|
||||
nativeDevice.InputAssembler.SetIndexBuffer(idx11.NativeBuffer, DxFormatConverter.Translate(indexElementSize), 0);
|
||||
|
||||
DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount);
|
||||
DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount, null);
|
||||
}
|
||||
|
||||
#endregion // DrawUserIndexedPrimitives<T>
|
||||
|
@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("0.7.10.*")]
|
||||
[assembly: AssemblyFileVersion("0.7.10.0")]
|
||||
[assembly: AssemblyVersion("0.7.11.*")]
|
||||
[assembly: AssemblyFileVersion("0.7.11.0")]
|
||||
|
@ -120,12 +120,17 @@ namespace ANX.RenderSystem.Windows.Metro
|
||||
|
||||
#region DrawIndexedPrimitives
|
||||
public void DrawIndexedPrimitives(PrimitiveType primitiveType, int baseVertex,
|
||||
int minVertexIndex, int numVertices, int startIndex, int primitiveCount)
|
||||
int minVertexIndex, int numVertices, int startIndex, int primitiveCount, IndexBuffer indexBuffer)
|
||||
{
|
||||
SetInputLayout();
|
||||
ApplyPrimitiveType(primitiveType);
|
||||
NativeDevice.SetDefaultTargets();
|
||||
|
||||
if (indexBuffer != null)
|
||||
{
|
||||
SetIndexBuffer(indexBuffer);
|
||||
}
|
||||
|
||||
int indexCount = CalculateVertexCount(primitiveType, primitiveCount);
|
||||
for (int passIndex = 0; passIndex < currentTechnique.PassCount; passIndex++)
|
||||
{
|
||||
@ -191,7 +196,7 @@ namespace ANX.RenderSystem.Windows.Metro
|
||||
|
||||
NativeDevice.NativeContext.InputAssembler.SetIndexBuffer(idxMetro.NativeBuffer, FormatConverter.Translate(indexElementSize), 0);
|
||||
|
||||
DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount);
|
||||
DrawIndexedPrimitives(primitiveType, 0, vertexOffset, numVertices, indexOffset, primitiveCount, null);
|
||||
}
|
||||
|
||||
#endregion // DrawUserIndexedPrimitives<T>
|
||||
|
@ -24,6 +24,6 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.2.6.*")]
|
||||
[assembly: AssemblyFileVersion("0.2.6.0")]
|
||||
[assembly: AssemblyVersion("0.2.7.*")]
|
||||
[assembly: AssemblyFileVersion("0.2.7.0")]
|
||||
[assembly: GuidAttribute("855A261E-DB66-4CB2-97F3-34BC9DA4DAA1")]
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -64,6 +64,10 @@
|
||||
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
|
||||
<Name>ANX.InputSystem.Standard</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SoundSystems\ANX.SoundSystem.Windows.XAudio\ANX.SoundSystem.Windows.XAudio_WindowsMetro.csproj">
|
||||
<Project>{6A582788-C4D2-410C-96CD-177F75712D65}</Project>
|
||||
<Name>ANX.SoundSystem.Windows.XAudio</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SampleContent\SampleContent.contentproj">
|
||||
<Project>{FA6E229D-4504-47B1-8A23-2D3FCC13F778}</Project>
|
||||
<Name>SampleContent</Name>
|
||||
|
Loading…
x
Reference in New Issue
Block a user