Renderer/RenderWindow: Remove Display and GetImpl methods

This commit is contained in:
Jérôme Leclercq 2021-08-27 15:39:23 +02:00
parent 3653e9136d
commit 120d8f5427
8 changed files with 52 additions and 62 deletions

View File

@ -236,8 +236,6 @@ int main()
Nz::WorldInstance planeInstance;
Nz::RenderWindowImpl* windowImpl = window.GetImpl();
Nz::RenderPipelineLayoutInfo lightingPipelineLayoutInfo;
Nz::Graphics::FillViewerPipelineLayout(lightingPipelineLayoutInfo);
@ -330,8 +328,8 @@ int main()
const std::shared_ptr<const Nz::VertexDeclaration>& fullscreenVertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_UV);
unsigned int offscreenWidth = window.GetSize().x;
unsigned int offscreenHeight = window.GetSize().y;
unsigned int offscreenWidth = windowSize.x;
unsigned int offscreenHeight = windowSize.y;
// Bloom data
@ -929,7 +927,7 @@ int main()
viewerInstance.UpdateViewMatrix(Nz::Matrix4f::ViewMatrix(viewerPos, camQuat));
}
Nz::RenderFrame frame = windowImpl->Acquire();
Nz::RenderFrame frame = window.AcquireFrame();
if (!frame)
continue;
@ -1108,6 +1106,7 @@ int main()
bakedGraph.Execute(frame);
const Nz::RenderTarget* windowRT = window.GetRenderTarget();
frame.Execute([&](Nz::CommandBufferBuilder& builder)
{
Nz::Recti windowRenderRect(0, 0, window.GetSize().x, window.GetSize().y);
@ -1116,7 +1115,7 @@ int main()
builder.BeginDebugRegion("Main window rendering", Nz::Color::Green);
{
builder.BeginRenderPass(windowImpl->GetFramebuffer(frame.GetFramebufferIndex()), windowImpl->GetRenderPass(), windowRenderRect);
builder.BeginRenderPass(windowRT->GetFramebuffer(frame.GetFramebufferIndex()), windowRT->GetRenderPass(), windowRenderRect);
{
builder.SetScissor(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) });
builder.SetViewport(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) });
@ -1133,8 +1132,6 @@ int main()
frame.Present();
window.Display();
matUpdate = false;
lightUpdate = false;

View File

@ -81,7 +81,7 @@ int main()
Nz::Vector2ui windowSize = window.GetSize();
Nz::Camera camera(window.GetImpl());
Nz::Camera camera(window.GetRenderTarget());
Nz::ViewerInstance& viewerInstance = camera.GetViewerInstance();
viewerInstance.UpdateTargetSize(Nz::Vector2f(window.GetSize()));
@ -98,8 +98,6 @@ int main()
framePipeline.RegisterInstancedDrawable(modelInstance, &model);
framePipeline.RegisterInstancedDrawable(modelInstance2, &model);
Nz::RenderWindowImpl* windowImpl = window.GetImpl();
Nz::Vector3f viewerPos = Nz::Vector3f::Zero();
Nz::EulerAnglesf camAngles(0.f, 0.f, 0.f);
@ -188,7 +186,7 @@ int main()
viewerPos += Nz::Vector3f::Down() * cameraSpeed;
}
Nz::RenderFrame frame = windowImpl->Acquire();
Nz::RenderFrame frame = window.AcquireFrame();
if (!frame)
continue;
@ -201,8 +199,6 @@ int main()
frame.Present();
window.Display();
// On incrémente le compteur de FPS improvisé
fps++;

View File

@ -37,12 +37,6 @@ int main()
Nz::RenderWindow window;
Nz::MeshParams meshParams;
meshParams.center = true;
meshParams.storage = Nz::DataStorage::Software;
meshParams.matrix = Nz::Matrix4f::Rotate(Nz::EulerAnglesf(0.f, 90.f, 0.f)) * Nz::Matrix4f::Scale(Nz::Vector3f(0.002f));
meshParams.vertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_UV);
std::shared_ptr<Nz::RenderDevice> device = Nz::Graphics::Instance()->GetRenderDevice();
std::string windowTitle = "Graphics Test";
@ -52,7 +46,11 @@ int main()
return __LINE__;
}
Nz::RenderWindowImpl* windowImpl = window.GetImpl();
Nz::MeshParams meshParams;
meshParams.center = true;
meshParams.storage = Nz::DataStorage::Software;
meshParams.matrix = Nz::Matrix4f::Rotate(Nz::EulerAnglesf(0.f, 90.f, 0.f)) * Nz::Matrix4f::Scale(Nz::Vector3f(0.002f));
meshParams.vertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_UV);
std::shared_ptr<Nz::Mesh> spaceshipMesh = Nz::Mesh::LoadFromFile(resourceDir / "Spaceship/spaceship.obj", meshParams);
if (!spaceshipMesh)
@ -65,17 +63,6 @@ int main()
std::shared_ptr<Nz::GraphicalMesh> gfxMesh = std::make_shared<Nz::GraphicalMesh>(*spaceshipMesh);
// Texture
std::shared_ptr<Nz::Image> diffuseImage = Nz::Image::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png");
if (!diffuseImage || !diffuseImage->Convert(Nz::PixelFormat::RGBA8_SRGB))
{
NazaraError("Failed to load image");
return __LINE__;
}
Nz::TextureParams texParams;
texParams.renderDevice = device;
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
std::shared_ptr<Nz::Material> material = std::make_shared<Nz::Material>();
std::shared_ptr<Nz::MaterialPass> depthPass = std::make_shared<Nz::MaterialPass>(Nz::DepthMaterial::GetSettings());
@ -94,6 +81,10 @@ int main()
Nz::TextureSamplerInfo samplerInfo;
samplerInfo.anisotropyLevel = 8;
Nz::TextureParams texParams;
texParams.renderDevice = device;
texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB;
Nz::BasicMaterial basicMat(*materialPass);
basicMat.EnableAlphaTest(false);
basicMat.SetAlphaMap(Nz::Texture::LoadFromFile(resourceDir / "alphatile.png", texParams));
@ -121,7 +112,7 @@ int main()
entt::entity viewer = registry.create();
registry.emplace<Nz::NodeComponent>(viewer);
registry.emplace<Nz::CameraComponent>(viewer, windowImpl);
registry.emplace<Nz::CameraComponent>(viewer, window.GetRenderTarget());
auto shipCollider = std::make_shared<Nz::ConvexCollider3D>(vertices, vertexMapper.GetVertexCount(), 0.01f);
@ -337,7 +328,7 @@ int main()
playerShipBody.AddForce(Nz::Vector3f::Down() * 3.f * mass, Nz::CoordSys::Local);
}
Nz::RenderFrame frame = windowImpl->Acquire();
Nz::RenderFrame frame = window.AcquireFrame();
if (!frame)
continue;
@ -345,8 +336,6 @@ int main()
frame.Present();
window.Display();
fps++;
if (secondClock.GetMilliseconds() >= 1000)

View File

@ -14,6 +14,8 @@
int main()
{
std::cout << u8"Héhéhé" << std::endl;
return 0;
std::filesystem::path resourceDir = "resources";
if (!std::filesystem::is_directory(resourceDir) && std::filesystem::is_directory(".." / resourceDir))
resourceDir = ".." / resourceDir;

View File

@ -221,8 +221,7 @@ int main()
Nz::RenderDevice* renderDevice = window.GetRenderDevice().get();
Nz::RenderWindowImpl* windowImpl = window.GetImpl();
std::shared_ptr<Nz::CommandPool> commandPool = windowImpl->CreateCommandPool(Nz::QueueType::Graphics);
std::shared_ptr<Nz::CommandPool> commandPool = renderDevice->InstantiateCommandPool(Nz::QueueType::Graphics);
Nz::RenderBuffer* renderBufferIB = static_cast<Nz::RenderBuffer*>(meshIB->GetBuffer()->GetImpl());
Nz::RenderBuffer* renderBufferVB = static_cast<Nz::RenderBuffer*>(meshVB->GetBuffer()->GetImpl());
@ -329,7 +328,7 @@ int main()
uboUpdate = true;
}
Nz::RenderFrame frame = windowImpl->Acquire();
Nz::RenderFrame frame = window.AcquireFrame();
if (!frame)
continue;
@ -355,6 +354,7 @@ int main()
uboUpdate = false;
}
const Nz::RenderTarget* windowRT = window.GetRenderTarget();
frame.Execute([&](Nz::CommandBufferBuilder& builder)
{
Nz::Recti renderRect(0, 0, window.GetSize().x, window.GetSize().y);
@ -366,7 +366,7 @@ int main()
builder.BeginDebugRegion("Main window rendering", Nz::Color::Green);
{
builder.BeginRenderPass(windowImpl->GetFramebuffer(frame.GetFramebufferIndex()), windowImpl->GetRenderPass(), renderRect, { clearValues[0], clearValues[1] });
builder.BeginRenderPass(windowRT->GetFramebuffer(frame.GetFramebufferIndex()), windowRT->GetRenderPass(), renderRect, { clearValues[0], clearValues[1] });
{
builder.BindIndexBuffer(*indexBufferImpl);
builder.BindPipeline(*pipeline);
@ -387,8 +387,6 @@ int main()
frame.Present();
window.Display();
// On incrémente le compteur de FPS improvisé
fps++;

View File

@ -29,15 +29,15 @@ namespace Nz
inline RenderWindow(std::shared_ptr<RenderDevice> renderDevice, void* handle, const RenderWindowParameters& parameters = RenderWindowParameters());
inline ~RenderWindow();
RenderFrame AcquireFrame();
bool Create(std::shared_ptr<RenderDevice> renderDevice, VideoMode mode, const std::string& title, WindowStyleFlags style = WindowStyle_Default, const RenderWindowParameters& parameters = RenderWindowParameters());
bool Create(std::shared_ptr<RenderDevice> renderDevice, void* handle, const RenderWindowParameters &parameters = RenderWindowParameters());
void Display();
void EnableVerticalSync(bool enabled);
inline RenderWindowImpl* GetImpl();
inline const std::shared_ptr<RenderDevice>& GetRenderDevice() const;
inline const RenderTarget* GetRenderTarget() const;
inline RenderSurface* GetSurface();
inline bool IsValid() const;

View File

@ -32,16 +32,16 @@ namespace Nz
Destroy();
}
inline RenderWindowImpl* RenderWindow::GetImpl()
{
return m_impl.get();
}
inline const std::shared_ptr<RenderDevice>& RenderWindow::GetRenderDevice() const
{
return m_renderDevice;
}
inline const RenderTarget* RenderWindow::GetRenderTarget() const
{
return m_impl.get();
}
inline RenderSurface* RenderWindow::GetSurface()
{
return m_surface.get();

View File

@ -11,6 +11,26 @@
namespace Nz
{
RenderFrame RenderWindow::AcquireFrame()
{
if (!m_impl)
{
NazaraError("window is not created");
return RenderFrame{};
}
if (m_framerateLimit > 0)
{
int remainingTime = 1000 / static_cast<int>(m_framerateLimit) - static_cast<int>(m_clock.GetMilliseconds());
if (remainingTime > 0)
std::this_thread::sleep_for(std::chrono::milliseconds(remainingTime));
m_clock.Restart();
}
return m_impl->Acquire();
}
bool RenderWindow::Create(std::shared_ptr<RenderDevice> renderDevice, VideoMode mode, const std::string& title, WindowStyleFlags style, const RenderWindowParameters& parameters)
{
m_parameters = parameters;
@ -27,18 +47,6 @@ namespace Nz
return Window::Create(handle);
}
void RenderWindow::Display()
{
if (m_framerateLimit > 0)
{
int remainingTime = 1000 / static_cast<int>(m_framerateLimit) - static_cast<int>(m_clock.GetMilliseconds());
if (remainingTime > 0)
std::this_thread::sleep_for(std::chrono::milliseconds(remainingTime));
m_clock.Restart();
}
}
void RenderWindow::EnableVerticalSync(bool enabled)
{
///TODO