Added camera to PickingPass and fixed memory leak
This commit is contained in:
@@ -37,6 +37,7 @@ private:
|
|||||||
const IRenderer* m_Renderer;
|
const IRenderer* m_Renderer;
|
||||||
|
|
||||||
ShaderProgram* m_PickingProgram;
|
ShaderProgram* m_PickingProgram;
|
||||||
|
Camera* m_Camera;
|
||||||
|
|
||||||
std::unordered_map<glm::vec2, EntityID> m_PickingColorsToEntity;
|
std::unordered_map<glm::vec2, EntityID> m_PickingColorsToEntity;
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ void PickingPass::Draw(RenderFrame& rf)
|
|||||||
|
|
||||||
for(auto scene : rf.RenderScenes)
|
for(auto scene : rf.RenderScenes)
|
||||||
{
|
{
|
||||||
|
m_Camera = scene->Camera;
|
||||||
|
|
||||||
for (auto &job : scene->Forward) {
|
for (auto &job : scene->Forward) {
|
||||||
auto modelJob = std::dynamic_pointer_cast<ModelJob>(job);
|
auto modelJob = std::dynamic_pointer_cast<ModelJob>(job);
|
||||||
|
|
||||||
@@ -99,8 +101,8 @@ void PickingPass::Draw(RenderFrame& rf)
|
|||||||
Events::Picking pickEvent = Events::Picking(
|
Events::Picking pickEvent = Events::Picking(
|
||||||
&m_PickingBuffer,
|
&m_PickingBuffer,
|
||||||
&m_DepthBuffer,
|
&m_DepthBuffer,
|
||||||
m_Renderer->Camera()->ProjectionMatrix(),
|
m_Camera->ProjectionMatrix(),
|
||||||
m_Renderer->Camera()->ViewMatrix(),
|
m_Camera->ViewMatrix(),
|
||||||
Rectangle(fbWidth, fbHeight),
|
Rectangle(fbWidth, fbHeight),
|
||||||
&m_PickingColorsToEntity);
|
&m_PickingColorsToEntity);
|
||||||
|
|
||||||
@@ -109,6 +111,8 @@ void PickingPass::Draw(RenderFrame& rf)
|
|||||||
delete state;
|
delete state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void PickingPass::GenerateTexture(GLuint* texture, GLenum wrapping, GLenum filtering, glm::vec2 dimensions, GLint internalFormat, GLint format, GLenum type) const
|
void PickingPass::GenerateTexture(GLuint* texture, GLenum wrapping, GLenum filtering, glm::vec2 dimensions, GLint internalFormat, GLint format, GLenum type) const
|
||||||
{
|
{
|
||||||
//TODO: Renderer: Make this in a sparate class
|
//TODO: Renderer: Make this in a sparate class
|
||||||
|
|||||||
@@ -263,4 +263,5 @@ void RenderSystem::Update(World* world, double dt)
|
|||||||
rs->Camera = m_Camera;
|
rs->Camera = m_Camera;
|
||||||
FillModels(&rs->Forward);
|
FillModels(&rs->Forward);
|
||||||
m_RenderFrame->Add(*rs);
|
m_RenderFrame->Add(*rs);
|
||||||
|
delete rs;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ void Renderer::Update(double dt)
|
|||||||
|
|
||||||
void Renderer::Draw(RenderFrame& rf)
|
void Renderer::Draw(RenderFrame& rf)
|
||||||
{
|
{
|
||||||
m_Camera = (*rf.begin())->Camera;
|
m_Camera = (*rf.begin())->Camera; // Fix this with some better solution
|
||||||
m_PickingPass->Draw(rf);
|
m_PickingPass->Draw(rf);
|
||||||
|
|
||||||
glClearColor(255.f / 255, 163.f / 255, 176.f / 255, 1.f);
|
glClearColor(255.f / 255, 163.f / 255, 176.f / 255, 1.f);
|
||||||
|
|||||||
Reference in New Issue
Block a user