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; Nz::MeshParams meshParams;
meshParams.bufferFactory = Nz::GetRenderBufferFactory(device);
meshParams.center = true; meshParams.center = true;
meshParams.vertexRotation = Nz::EulerAnglesf(0.f, -90.f, 0.f); meshParams.vertexRotation = Nz::EulerAnglesf(0.f, -90.f, 0.f);
meshParams.vertexScale = Nz::Vector3f(0.002f); meshParams.vertexScale = Nz::Vector3f(0.002f);
@ -153,6 +152,17 @@ int main()
// Vertex buffer // Vertex buffer
std::cout << "Vertex count: " << meshVB->GetVertexCount() << std::endl; 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 // Texture
Nz::TextureParams texParams; Nz::TextureParams texParams;
texParams.renderDevice = device; texParams.renderDevice = device;
@ -230,13 +240,8 @@ int main()
std::shared_ptr<Nz::RenderPipeline> pipeline = device->InstantiateRenderPipeline(pipelineInfo); 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); 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::Vector3f viewerPos = Nz::Vector3f::Zero();
Nz::EulerAnglesf camAngles(0.f, 0.f, 0.f); 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.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.BindPipeline(*pipeline);
builder.BindVertexBuffer(0, renderBufferVB); builder.BindVertexBuffer(0, *renderBufferVB);
builder.BindShaderBinding(0, *viewerShaderBinding); builder.BindShaderBinding(0, *viewerShaderBinding);
builder.BindShaderBinding(1, *textureShaderBinding); builder.BindShaderBinding(1, *textureShaderBinding);