From 8eed1161e5ba7033b5472b80a086ff0e671b859c Mon Sep 17 00:00:00 2001 From: SirLynix Date: Tue, 6 Dec 2022 07:48:38 +0100 Subject: [PATCH] RenderTest: Don't directly load mesh into VRAM --- examples/RenderTest/main.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/RenderTest/main.cpp b/examples/RenderTest/main.cpp index be9c4d324..8c66c22cb 100644 --- a/examples/RenderTest/main.cpp +++ b/examples/RenderTest/main.cpp @@ -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& renderDevice = window.GetRenderDevice(); + + assert(meshIB->GetBuffer()->GetStorage() == Nz::DataStorage::Software); + assert(meshVB->GetBuffer()->GetStorage() == Nz::DataStorage::Software); + const Nz::SoftwareBuffer* indexBufferContent = static_cast(meshIB->GetBuffer().get()); + const Nz::SoftwareBuffer* vertexBufferContent = static_cast(meshVB->GetBuffer().get()); + + std::shared_ptr renderBufferIB = renderDevice->InstantiateBuffer(Nz::BufferType::Index, indexBufferContent->GetSize(), Nz::BufferUsage::DeviceLocal, indexBufferContent->GetData()); + std::shared_ptr 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 pipeline = device->InstantiateRenderPipeline(pipelineInfo); - const std::shared_ptr& renderDevice = window.GetRenderDevice(); - std::shared_ptr commandPool = renderDevice->InstantiateCommandPool(Nz::QueueType::Graphics); - Nz::RenderBuffer& renderBufferIB = static_cast(*meshIB->GetBuffer()); - Nz::RenderBuffer& renderBufferVB = static_cast(*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);