add when minimized do not render, fix some build problem in dll mode
This commit is contained in:
@ -65,8 +65,9 @@ set(STATIC_LIBRARY ${PROJECT_NAME}-static)
|
|||||||
add_library(${STATIC_LIBRARY} STATIC ${SRC_SOURCE})
|
add_library(${STATIC_LIBRARY} STATIC ${SRC_SOURCE})
|
||||||
|
|
||||||
target_compile_definitions(${STATIC_LIBRARY} PRIVATE
|
target_compile_definitions(${STATIC_LIBRARY} PRIVATE
|
||||||
PRISM_STATIC
|
|
||||||
${DEBUG_DEFINITIONS}
|
${DEBUG_DEFINITIONS}
|
||||||
|
INTERFACE
|
||||||
|
PRISM_STATIC
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(${STATIC_LIBRARY} PUBLIC
|
target_include_directories(${STATIC_LIBRARY} PUBLIC
|
||||||
@ -83,7 +84,7 @@ target_precompile_headers(${STATIC_LIBRARY} PRIVATE
|
|||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(${STATIC_LIBRARY} PROPERTIES
|
set_target_properties(${STATIC_LIBRARY} PROPERTIES
|
||||||
OUTPUT_NAME ${PROJECT_NAME}d
|
OUTPUT_NAME ${PROJECT_NAME}
|
||||||
ARCHIVE_OUTPUT_NAME ${PROJECT_NAME}d
|
ARCHIVE_OUTPUT_NAME ${PROJECT_NAME}d
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ namespace Prism
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
Application* Application::s_Instance = nullptr;
|
// Application* Application::s_Instance = nullptr;
|
||||||
|
|
||||||
Application::Application()
|
Application::Application()
|
||||||
{
|
{
|
||||||
@ -49,15 +49,18 @@ namespace Prism
|
|||||||
OnInit();
|
OnInit();
|
||||||
|
|
||||||
while (m_Running)
|
while (m_Running)
|
||||||
|
{
|
||||||
|
if (!m_Minimized)
|
||||||
{
|
{
|
||||||
for (Layer* layer : m_LayerStack)
|
for (Layer* layer : m_LayerStack)
|
||||||
layer->OnUpdate();
|
layer->OnUpdate();
|
||||||
|
|
||||||
Application* app = this;
|
PM_RENDER_S({ self->RenderImGui(); });
|
||||||
PM_RENDER_1(app, { app->RenderImGui(); });
|
|
||||||
|
|
||||||
Renderer::Get().WaitAndRender();
|
Renderer::Get().WaitAndRender();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
m_Window->OnUpdate();
|
m_Window->OnUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,6 +137,13 @@ namespace Prism
|
|||||||
bool Application::OnWindowResize(const WindowResizeEvent& e)
|
bool Application::OnWindowResize(const WindowResizeEvent& e)
|
||||||
{
|
{
|
||||||
int width = e.GetWidth(), height = e.GetHeight();
|
int width = e.GetWidth(), height = e.GetHeight();
|
||||||
|
if (width == 0 || height == 0)
|
||||||
|
{
|
||||||
|
m_Minimized = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
m_Minimized = false;
|
||||||
|
|
||||||
PM_RENDER_2(width, height, { glViewport(0, 0, width, height); });
|
PM_RENDER_2(width, height, { glViewport(0, 0, width, height); });
|
||||||
auto& fbs = FrameBufferPool::GetGlobal()->GetAll();
|
auto& fbs = FrameBufferPool::GetGlobal()->GetAll();
|
||||||
for (auto& fb : fbs)
|
for (auto& fb : fbs)
|
||||||
|
|||||||
@ -44,10 +44,12 @@ namespace Prism
|
|||||||
std::unique_ptr<Window> m_Window;
|
std::unique_ptr<Window> m_Window;
|
||||||
|
|
||||||
bool m_Running = true;
|
bool m_Running = true;
|
||||||
|
bool m_Minimized = false;
|
||||||
|
|
||||||
LayerStack m_LayerStack;
|
LayerStack m_LayerStack;
|
||||||
ImGuiLayer* m_ImGuiLayer;
|
ImGuiLayer* m_ImGuiLayer;
|
||||||
|
|
||||||
static Application* s_Instance;
|
static inline Application* s_Instance = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ extern Prism::Application* Prism::CreateApplication();
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
#ifndef PRISM_SHARED
|
#ifdef PRISM_STATIC
|
||||||
Prism::InitializeCore();
|
Prism::InitializeCore();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ int main(int argc, char** argv)
|
|||||||
app->Run();
|
app->Run();
|
||||||
delete app;
|
delete app;
|
||||||
|
|
||||||
#ifndef PRISM_SHARED
|
#ifdef PRISM_STATIC
|
||||||
Prism::ShutdownCore();
|
Prism::ShutdownCore();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
namespace Prism
|
namespace Prism
|
||||||
{
|
{
|
||||||
class Camera
|
class PRISM_API Camera
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Camera(const glm::mat4& projectionMatrix);
|
Camera(const glm::mat4& projectionMatrix);
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
namespace Prism
|
namespace Prism
|
||||||
{
|
{
|
||||||
FrameBuffer* Prism::FrameBuffer::Create(uint32_t width, uint32_t height, FramebufferFormat format)
|
FrameBuffer* FrameBuffer::Create(uint32_t width, uint32_t height, FramebufferFormat format)
|
||||||
{
|
{
|
||||||
FrameBuffer* result = nullptr;
|
FrameBuffer* result = nullptr;
|
||||||
switch (RendererAPI::Current())
|
switch (RendererAPI::Current())
|
||||||
|
|||||||
@ -16,7 +16,7 @@ namespace Prism
|
|||||||
RGBA16F = 2
|
RGBA16F = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
class FrameBuffer
|
class PRISM_API FrameBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static FrameBuffer* Create(uint32_t width, uint32_t height, FramebufferFormat format);
|
static FrameBuffer* Create(uint32_t width, uint32_t height, FramebufferFormat format);
|
||||||
|
|||||||
@ -85,7 +85,7 @@ namespace Prism
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_VertexBuffer.reset(VertexBuffer::Create());
|
m_VertexBuffer.reset(VertexBuffer::Create());
|
||||||
m_VertexBuffer->SetData(m_Vertices.data(), m_Vertices.size() * sizeof(Vertex));
|
m_VertexBuffer->SetData(m_Vertices.data(), (uint32_t)(m_Vertices.size() * sizeof(Vertex)));
|
||||||
|
|
||||||
// Extract indices from model
|
// Extract indices from model
|
||||||
m_Indices.reserve(mesh->mNumFaces);
|
m_Indices.reserve(mesh->mNumFaces);
|
||||||
@ -96,7 +96,7 @@ namespace Prism
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_IndexBuffer.reset(IndexBuffer::Create());
|
m_IndexBuffer.reset(IndexBuffer::Create());
|
||||||
m_IndexBuffer->SetData(m_Indices.data(), m_Indices.size() * sizeof(Index));
|
m_IndexBuffer->SetData(m_Indices.data(), (uint32_t)(m_Indices.size() * sizeof(Index)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh::~Mesh()
|
Mesh::~Mesh()
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
namespace Prism
|
namespace Prism
|
||||||
{
|
{
|
||||||
class Mesh
|
class PRISM_API Mesh
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
struct Vertex
|
struct Vertex
|
||||||
|
|||||||
@ -35,7 +35,6 @@ namespace Prism
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static Renderer* s_Instance;
|
static Renderer* s_Instance;
|
||||||
// static inline Renderer* s_Instance = nullptr;
|
|
||||||
|
|
||||||
RenderCommandQueue m_CommandQueue;
|
RenderCommandQueue m_CommandQueue;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
namespace Prism
|
namespace Prism
|
||||||
{
|
{
|
||||||
std::vector<Shader*> Shader::s_AllShaders;
|
// std::vector<Shader*> Shader::s_AllShaders;
|
||||||
|
|
||||||
Shader* Shader::Create(const std::string& filepath)
|
Shader* Shader::Create(const std::string& filepath)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -105,7 +105,7 @@ namespace Prism
|
|||||||
|
|
||||||
static Shader* Create(const std::string& filepath);
|
static Shader* Create(const std::string& filepath);
|
||||||
|
|
||||||
static std::vector<Shader*> s_AllShaders;
|
static inline std::vector<Shader*> s_AllShaders;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,5 +8,5 @@ file(COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR}/bin)
|
|||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${SRC_SOURCE})
|
add_executable(${PROJECT_NAME} ${SRC_SOURCE})
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Prism-static)
|
target_link_libraries(${PROJECT_NAME} PRIVATE Prism-shared)
|
||||||
#target_compile_definitions(${PROJECT_NAME} PRIVATE ENABLE_DOCKSPACE)
|
#target_compile_definitions(${PROJECT_NAME} PRIVATE ENABLE_DOCKSPACE)
|
||||||
@ -369,7 +369,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
if (ImGui::CollapsingHeader("Albedo", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
if (ImGui::CollapsingHeader("Albedo", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
{
|
{
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
||||||
ImGui::Image(m_AlbedoInput.TextureMap ? (void*)m_AlbedoInput.TextureMap->GetRendererID() : (void*)m_CheckerboardTex->GetRendererID(), ImVec2(64, 64));
|
ImGui::Image((ImTextureRef)(m_AlbedoInput.TextureMap ? m_AlbedoInput.TextureMap->GetRendererID() : m_CheckerboardTex->GetRendererID()), ImVec2(64, 64));
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
@ -379,7 +379,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
||||||
ImGui::TextUnformatted(m_AlbedoInput.TextureMap->GetPath().c_str());
|
ImGui::TextUnformatted(m_AlbedoInput.TextureMap->GetPath().c_str());
|
||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
ImGui::Image((void*)m_AlbedoInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
ImGui::Image((ImTextureRef)m_AlbedoInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemClicked())
|
if (ImGui::IsItemClicked())
|
||||||
@ -407,7 +407,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
if (ImGui::CollapsingHeader("Normals", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
if (ImGui::CollapsingHeader("Normals", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
{
|
{
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
||||||
ImGui::Image(m_NormalInput.TextureMap ? (void*)m_NormalInput.TextureMap->GetRendererID() : (void*)m_CheckerboardTex->GetRendererID(), ImVec2(64, 64));
|
ImGui::Image((ImTextureRef)(m_NormalInput.TextureMap ? m_NormalInput.TextureMap->GetRendererID() : m_CheckerboardTex->GetRendererID()), ImVec2(64, 64));
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
@ -417,7 +417,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
||||||
ImGui::TextUnformatted(m_NormalInput.TextureMap->GetPath().c_str());
|
ImGui::TextUnformatted(m_NormalInput.TextureMap->GetPath().c_str());
|
||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
ImGui::Image((void*)m_NormalInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
ImGui::Image((ImTextureRef)m_NormalInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemClicked())
|
if (ImGui::IsItemClicked())
|
||||||
@ -436,7 +436,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
if (ImGui::CollapsingHeader("Metalness", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
if (ImGui::CollapsingHeader("Metalness", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
{
|
{
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
||||||
ImGui::Image(m_MetalnessInput.TextureMap ? (void*)m_MetalnessInput.TextureMap->GetRendererID() : (void*)m_CheckerboardTex->GetRendererID(), ImVec2(64, 64));
|
ImGui::Image((ImTextureRef)(m_MetalnessInput.TextureMap ? m_MetalnessInput.TextureMap->GetRendererID() : m_CheckerboardTex->GetRendererID()), ImVec2(64, 64));
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
@ -446,7 +446,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
||||||
ImGui::TextUnformatted(m_MetalnessInput.TextureMap->GetPath().c_str());
|
ImGui::TextUnformatted(m_MetalnessInput.TextureMap->GetPath().c_str());
|
||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
ImGui::Image((void*)m_MetalnessInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
ImGui::Image((ImTextureRef)m_MetalnessInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemClicked())
|
if (ImGui::IsItemClicked())
|
||||||
@ -467,7 +467,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
if (ImGui::CollapsingHeader("Roughness", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
if (ImGui::CollapsingHeader("Roughness", nullptr, ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
{
|
{
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10, 10));
|
||||||
ImGui::Image(m_RoughnessInput.TextureMap ? (void*)m_RoughnessInput.TextureMap->GetRendererID() : (void*)m_CheckerboardTex->GetRendererID(), ImVec2(64, 64));
|
ImGui::Image((ImTextureRef)(m_RoughnessInput.TextureMap ? m_RoughnessInput.TextureMap->GetRendererID() : m_CheckerboardTex->GetRendererID()), ImVec2(64, 64));
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
if (ImGui::IsItemHovered())
|
if (ImGui::IsItemHovered())
|
||||||
{
|
{
|
||||||
@ -477,7 +477,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
||||||
ImGui::TextUnformatted(m_RoughnessInput.TextureMap->GetPath().c_str());
|
ImGui::TextUnformatted(m_RoughnessInput.TextureMap->GetPath().c_str());
|
||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
ImGui::Image((void*)m_RoughnessInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
ImGui::Image((ImTextureRef)m_RoughnessInput.TextureMap->GetRendererID(), ImVec2(384, 384));
|
||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemClicked())
|
if (ImGui::IsItemClicked())
|
||||||
@ -504,7 +504,7 @@ void DemoLayer::OnImGuiRender()
|
|||||||
m_Framebuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
m_Framebuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
||||||
m_FinalPresentBuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
m_FinalPresentBuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
||||||
m_Camera.SetProjectionMatrix(glm::perspectiveFov(glm::radians(45.0f), viewportSize.x, viewportSize.y, 0.1f, 10000.0f));
|
m_Camera.SetProjectionMatrix(glm::perspectiveFov(glm::radians(45.0f), viewportSize.x, viewportSize.y, 0.1f, 10000.0f));
|
||||||
ImGui::Image((void*)m_FinalPresentBuffer->GetColorAttachmentRendererID(), viewportSize, { 0, 1 }, { 1, 0 });
|
ImGui::Image((ImTextureRef)m_FinalPresentBuffer->GetColorAttachmentRendererID(), viewportSize, { 0, 1 }, { 1, 0 });
|
||||||
// ImGui::Image((void*)m_Framebuffer->GetColorAttachmentRendererID(), viewportSize, { 0, 1 }, { 1, 0 });
|
// ImGui::Image((void*)m_Framebuffer->GetColorAttachmentRendererID(), viewportSize, { 0, 1 }, { 1, 0 });
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
|
|||||||
@ -246,7 +246,7 @@ void TestLayer::OnImGuiRender()
|
|||||||
m_FrameBuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
m_FrameBuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
||||||
m_FinalPresentBuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
m_FinalPresentBuffer->Resize((uint32_t)viewportSize.x, (uint32_t)viewportSize.y);
|
||||||
m_Camera.SetProjectionMatrix(glm::perspectiveFov(glm::radians(45.0f), viewportSize.x, viewportSize.y, 0.1f, 10000.0f));
|
m_Camera.SetProjectionMatrix(glm::perspectiveFov(glm::radians(45.0f), viewportSize.x, viewportSize.y, 0.1f, 10000.0f));
|
||||||
ImGui::Image((void*)m_FinalPresentBuffer->GetColorAttachmentRendererID(), viewportSize, {0, 1}, {1, 0});
|
ImGui::Image((ImTextureRef)m_FinalPresentBuffer->GetColorAttachmentRendererID(), viewportSize, {0, 1}, {1, 0});
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user