mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-16 18:59:48 +12:00
create a buffer when there are too many vertices
This commit is contained in:
parent
225f806eab
commit
67e3a1d8eb
1 changed files with 8 additions and 1 deletions
|
@ -206,7 +206,14 @@ void RendererMTL::drawVertices(PICA::PrimType primType, std::span<const PICA::Ve
|
||||||
|
|
||||||
MTL::RenderCommandEncoder* renderCommandEncoder = commandBuffer->renderCommandEncoder(renderPassDescriptor);
|
MTL::RenderCommandEncoder* renderCommandEncoder = commandBuffer->renderCommandEncoder(renderPassDescriptor);
|
||||||
renderCommandEncoder->setRenderPipelineState(drawPipeline);
|
renderCommandEncoder->setRenderPipelineState(drawPipeline);
|
||||||
renderCommandEncoder->setVertexBytes(vertices.data(), vertices.size_bytes(), VERTEX_BUFFER_BINDING_INDEX);
|
// If size is < 4KB, use inline vertex data, otherwise use a buffer
|
||||||
|
if (vertices.size_bytes() < 4 * 1024) {
|
||||||
|
renderCommandEncoder->setVertexBytes(vertices.data(), vertices.size_bytes(), VERTEX_BUFFER_BINDING_INDEX);
|
||||||
|
} else {
|
||||||
|
// TODO: cache this buffer
|
||||||
|
MTL::Buffer* vertexBuffer = device->newBuffer(vertices.data(), vertices.size_bytes(), MTL::ResourceStorageModeShared);
|
||||||
|
renderCommandEncoder->setVertexBuffer(vertexBuffer, 0, VERTEX_BUFFER_BINDING_INDEX);
|
||||||
|
}
|
||||||
|
|
||||||
// Bind resources
|
// Bind resources
|
||||||
setupTextureEnvState(renderCommandEncoder);
|
setupTextureEnvState(renderCommandEncoder);
|
||||||
|
|
Loading…
Add table
Reference in a new issue