Add proper support for IndexType and uint32 indices
This commit is contained in:
@@ -39,6 +39,7 @@ namespace Nz
|
||||
throw std::runtime_error("failed to fill index buffer");
|
||||
|
||||
submeshData.indexCount = indexBuffer->GetIndexCount();
|
||||
submeshData.indexType = indexBuffer->GetIndexType();
|
||||
|
||||
submeshData.vertexBuffer = renderDevice->InstantiateBuffer(BufferType::Vertex, vertexBuffer->GetStride() * vertexBuffer->GetVertexCount(), BufferUsage::DeviceLocal | BufferUsage::Write);
|
||||
if (!submeshData.vertexBuffer->Fill(vertexBufferContent->GetData() + vertexBuffer->GetStartOffset(), 0, vertexBuffer->GetEndOffset() - vertexBuffer->GetStartOffset()))
|
||||
|
||||
@@ -46,7 +46,10 @@ namespace Nz
|
||||
const auto& vertexBuffer = m_graphicalMesh->GetVertexBuffer(i);
|
||||
const auto& renderPipeline = materialPass->GetPipeline()->GetRenderPipeline(submeshData.vertexBufferData);
|
||||
|
||||
elements.emplace_back(std::make_unique<RenderSubmesh>(GetRenderLayer(), materialPass, renderPipeline, worldInstance, m_graphicalMesh->GetIndexCount(i), indexBuffer, vertexBuffer, scissorBox));
|
||||
std::size_t indexCount = m_graphicalMesh->GetIndexCount(i);
|
||||
IndexType indexType = m_graphicalMesh->GetIndexType(i);
|
||||
|
||||
elements.emplace_back(std::make_unique<RenderSubmesh>(GetRenderLayer(), materialPass, renderPipeline, worldInstance, indexCount, indexType, indexBuffer, vertexBuffer, scissorBox));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ namespace Nz
|
||||
{
|
||||
auto& data = static_cast<SpriteChainRendererData&>(rendererData);
|
||||
|
||||
commandBuffer.BindIndexBuffer(*m_indexBuffer);
|
||||
commandBuffer.BindIndexBuffer(*m_indexBuffer, Nz::IndexType::U16);
|
||||
|
||||
Vector2f targetSize = viewerInstance.GetTargetSize();
|
||||
Recti fullscreenScissorBox(0, 0, SafeCast<int>(std::floor(targetSize.x)), SafeCast<int>(std::floor(targetSize.y)));
|
||||
|
||||
@@ -169,6 +169,7 @@ namespace Nz
|
||||
drawCall.firstIndex = 0;
|
||||
drawCall.indexBuffer = currentIndexBuffer;
|
||||
drawCall.indexCount = submesh.GetIndexCount();
|
||||
drawCall.indexType = submesh.GetIndexType();
|
||||
drawCall.renderPipeline = currentPipeline;
|
||||
drawCall.scissorBox = currentScissorBox;
|
||||
drawCall.shaderBinding = currentShaderBinding;
|
||||
@@ -217,7 +218,7 @@ namespace Nz
|
||||
|
||||
if (currentIndexBuffer != drawData.indexBuffer)
|
||||
{
|
||||
commandBuffer.BindIndexBuffer(*drawData.indexBuffer);
|
||||
commandBuffer.BindIndexBuffer(*drawData.indexBuffer, drawData.indexType);
|
||||
currentIndexBuffer = drawData.indexBuffer;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user