- fixed a issue with DrawIndexedPrimitives in DX10, DX11 and DX11.1 RenderSystems. (part of issue #531)

This commit is contained in:
Glatzemann 2012-09-21 12:07:20 +00:00 committed by Konstantin Koch
parent ae61d9850c
commit 825ed2b10c
12 changed files with 16079 additions and 16085 deletions

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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 ?

View File

@ -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")]

View File

@ -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
{

View File

@ -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")]

View File

@ -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>

View File

@ -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")]

View File

@ -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>

View File

@ -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

View File

@ -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>