RenderTest: Don't directly load mesh into VRAM

This commit is contained in:
SirLynix 2022-12-06 07:48:38 +01:00
parent 2dd0e7d9c8
commit 8eed1161e5
1 changed files with 13 additions and 8 deletions

View File

@ -129,7 +129,6 @@ int main()
}
Nz::MeshParams meshParams;
meshParams.bufferFactory = Nz::GetRenderBufferFactory(device);
meshParams.center = true;
meshParams.vertexRotation = Nz::EulerAnglesf(0.f, -90.f, 0.f);
meshParams.vertexScale = Nz::Vector3f(0.002f);
@ -153,6 +152,17 @@ int main()
// Vertex buffer
std::cout << "Vertex count: " << meshVB->GetVertexCount() << std::endl;
// Create renderbuffers (GPU buffers)
const std::shared_ptr<Nz::RenderDevice>& renderDevice = window.GetRenderDevice();
assert(meshIB->GetBuffer()->GetStorage() == Nz::DataStorage::Software);
assert(meshVB->GetBuffer()->GetStorage() == Nz::DataStorage::Software);
const Nz::SoftwareBuffer* indexBufferContent = static_cast<const Nz::SoftwareBuffer*>(meshIB->GetBuffer().get());
const Nz::SoftwareBuffer* vertexBufferContent = static_cast<const Nz::SoftwareBuffer*>(meshVB->GetBuffer().get());
std::shared_ptr<Nz::RenderBuffer> renderBufferIB = renderDevice->InstantiateBuffer(Nz::BufferType::Index, indexBufferContent->GetSize(), Nz::BufferUsage::DeviceLocal, indexBufferContent->GetData());
std::shared_ptr<Nz::RenderBuffer> renderBufferVB = renderDevice->InstantiateBuffer(Nz::BufferType::Vertex, vertexBufferContent->GetSize(), Nz::BufferUsage::DeviceLocal, vertexBufferContent->GetData());
// Texture
Nz::TextureParams texParams;
texParams.renderDevice = device;
@ -230,13 +240,8 @@ int main()
std::shared_ptr<Nz::RenderPipeline> pipeline = device->InstantiateRenderPipeline(pipelineInfo);
const std::shared_ptr<Nz::RenderDevice>& renderDevice = window.GetRenderDevice();
std::shared_ptr<Nz::CommandPool> commandPool = renderDevice->InstantiateCommandPool(Nz::QueueType::Graphics);
Nz::RenderBuffer& renderBufferIB = static_cast<Nz::RenderBuffer&>(*meshIB->GetBuffer());
Nz::RenderBuffer& renderBufferVB = static_cast<Nz::RenderBuffer&>(*meshVB->GetBuffer());
Nz::Vector3f viewerPos = Nz::Vector3f::Zero();
Nz::EulerAnglesf camAngles(0.f, 0.f, 0.f);
@ -379,9 +384,9 @@ int main()
{
builder.BeginRenderPass(windowRT->GetFramebuffer(frame.GetFramebufferIndex()), windowRT->GetRenderPass(), renderRect, { clearValues[0], clearValues[1] });
{
builder.BindIndexBuffer(renderBufferIB, Nz::IndexType::U16);
builder.BindIndexBuffer(*renderBufferIB, Nz::IndexType::U16);
builder.BindPipeline(*pipeline);
builder.BindVertexBuffer(0, renderBufferVB);
builder.BindVertexBuffer(0, *renderBufferVB);
builder.BindShaderBinding(0, *viewerShaderBinding);
builder.BindShaderBinding(1, *textureShaderBinding);