Fix D3D11 to properly issue instanced draws even if instance count is 1
This commit is contained in:
@@ -485,7 +485,7 @@ public:
|
||||
/// </summary>
|
||||
/// <param name="startVertex">A value added to each index before reading a vertex from the vertex buffer.</param>
|
||||
/// <param name="verticesCount">The vertices count.</param>
|
||||
API_FUNCTION() FORCE_INLINE void Draw(uint32 startVertex, uint32 verticesCount)
|
||||
API_FUNCTION() FORCE_INLINE void Draw(int32 startVertex, uint32 verticesCount)
|
||||
{
|
||||
DrawInstanced(verticesCount, 1, 0, startVertex);
|
||||
}
|
||||
|
||||
@@ -487,20 +487,14 @@ void GPUContextDX11::ResolveMultisample(GPUTexture* sourceMultisampleTexture, GP
|
||||
void GPUContextDX11::DrawInstanced(uint32 verticesCount, uint32 instanceCount, int32 startInstance, int32 startVertex)
|
||||
{
|
||||
onDrawCall();
|
||||
if (instanceCount > 1)
|
||||
_context->DrawInstanced(verticesCount, instanceCount, startVertex, startInstance);
|
||||
else
|
||||
_context->Draw(verticesCount, startVertex);
|
||||
_context->DrawInstanced(verticesCount, instanceCount, startVertex, startInstance);
|
||||
RENDER_STAT_DRAW_CALL(verticesCount * instanceCount, verticesCount * instanceCount / 3);
|
||||
}
|
||||
|
||||
void GPUContextDX11::DrawIndexedInstanced(uint32 indicesCount, uint32 instanceCount, int32 startInstance, int32 startVertex, int32 startIndex)
|
||||
{
|
||||
onDrawCall();
|
||||
if (instanceCount > 1)
|
||||
_context->DrawIndexedInstanced(indicesCount, instanceCount, startIndex, startVertex, startInstance);
|
||||
else
|
||||
_context->DrawIndexed(indicesCount, startIndex, startVertex);
|
||||
_context->DrawIndexedInstanced(indicesCount, instanceCount, startIndex, startVertex, startInstance);
|
||||
RENDER_STAT_DRAW_CALL(0, indicesCount / 3 * instanceCount);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user