2018-09-14 22:09:43 +00:00
|
|
|
#include "LitScene.h"
|
|
|
|
|
2018-10-10 21:44:15 +00:00
|
|
|
#include "deps.h"
|
2018-09-14 22:09:43 +00:00
|
|
|
|
|
|
|
#include "Util.h"
|
|
|
|
#include "GLUtil.h"
|
|
|
|
#include "MeshFactory.h"
|
|
|
|
|
|
|
|
namespace charcoal
|
|
|
|
{
|
|
|
|
namespace builtin
|
|
|
|
{
|
2018-09-19 07:52:42 +00:00
|
|
|
namespace lit
|
2018-09-14 22:09:43 +00:00
|
|
|
{
|
2018-09-19 07:52:42 +00:00
|
|
|
void Scene::init()
|
2018-09-14 22:09:43 +00:00
|
|
|
{
|
2018-09-19 07:52:42 +00:00
|
|
|
for (auto iter = m_batches.begin(); iter != m_batches.end(); ++iter)
|
|
|
|
{
|
|
|
|
Batch& batch = *iter;
|
|
|
|
batch.init();
|
|
|
|
add_prerenderable(&batch);
|
|
|
|
}
|
2018-09-14 22:09:43 +00:00
|
|
|
}
|
|
|
|
|
2018-09-19 07:52:42 +00:00
|
|
|
void Scene::use()
|
|
|
|
{
|
|
|
|
// TODO: move to glutil
|
|
|
|
glEnable(GL_DEPTH_TEST);
|
|
|
|
glDepthFunc(GL_LESS);
|
|
|
|
}
|
2018-09-14 22:09:43 +00:00
|
|
|
|
2018-09-19 07:52:42 +00:00
|
|
|
void Scene::unuse()
|
|
|
|
{
|
2018-09-14 22:09:43 +00:00
|
|
|
|
2018-09-19 07:52:42 +00:00
|
|
|
}
|
2018-09-14 22:09:43 +00:00
|
|
|
|
2018-09-19 07:52:42 +00:00
|
|
|
void Scene::render()
|
2018-09-14 22:09:43 +00:00
|
|
|
{
|
2018-09-19 07:52:42 +00:00
|
|
|
glutil::clear_screen();
|
|
|
|
m_shader_program.use();
|
|
|
|
glutil::uniform_matrix(0, m_p_camera->get_world_to_view_matrix());
|
|
|
|
glutil::uniform_vec3(4, m_p_camera->get_position());
|
|
|
|
glutil::uniform_uint(5, (unsigned int)m_lights.size());
|
|
|
|
glutil::uniform_lights(6, m_lights);
|
|
|
|
for (auto iter = m_batches.begin(); iter != m_batches.end(); ++iter)
|
|
|
|
{
|
|
|
|
iter->render();
|
|
|
|
}
|
2018-09-14 22:09:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|