fix all six planes for rendering and drawing

This commit is contained in:
2017-04-28 00:06:24 +01:00
parent a6a020a389
commit 5753002ca9
3 changed files with 79 additions and 30 deletions

View File

@@ -1867,6 +1867,7 @@ public:
std::unique_ptr<ui::Canvas> m_canvas;
ui::Brush m_brush;
Sampler m_sampler;
ui::Plane m_face_plane;
virtual Node* clone_instantiate() const override { return new NodeCanvas(); }
virtual void init() override
{
@@ -1876,6 +1877,7 @@ public:
m_canvas->layer_add("asd");
m_canvas->clear();
m_sampler.create();
m_face_plane.create<1>(1.99, 1.99);
}
virtual void draw() override
{
@@ -1892,8 +1894,6 @@ public:
glm::ivec4 c = (glm::ivec4)glm::vec4(box.x, (int)(vp[3] - box.y - box.w), box.z, box.w);
glViewport(c.x, c.y, c.z, c.w);
glm::vec2 sz = { m_canvas->m_width, m_canvas->m_height };
m_canvas->m_cam_rot = m_pan * 0.001f;
//glm::mat4 proj = glm::ortho(0.f, box.z, 0.f, box.w, -1000.f, 1000.f);
@@ -1920,23 +1920,24 @@ public:
glEnable(GL_BLEND);
for (auto layer_index : m_canvas->m_order)
{
for (int plane_index = 0; plane_index < 4; plane_index++)
for (int plane_index = 0; plane_index < 6; plane_index++)
{
auto plane_mvp = proj * camera * glm::eulerAngleY(glm::radians(90.f * plane_index)) * glm::translate(glm::vec3(0, 0, -1));
auto plane_mvp = proj * camera * m_canvas->m_plane_transform[plane_index] * glm::translate(glm::vec3(0, 0, -1));
ui::ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp);
if (!(m_canvas->m_erase && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index))
{
ui::ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_layers[layer_index].m_opacity);
m_canvas->m_layers[layer_index].m_rtt[plane_index].bindTexture();
NodeBorder::m_plane.draw_fill();
m_face_plane.draw_fill();
m_canvas->m_layers[layer_index].m_rtt[plane_index].unbindTexture();
}
if (m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index)
{
glEnable(GL_BLEND);
ui::ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_current_stroke->m_brush.m_tip_opacity);
ui::ShaderManager::u_float(kShaderUniform::Alpha,
m_canvas->m_current_stroke->m_brush.m_tip_opacity * m_canvas->m_layers[layer_index].m_opacity);
m_canvas->m_tmp[plane_index].bindTexture();
NodeBorder::m_plane.draw_fill();
m_face_plane.draw_fill();
m_canvas->m_tmp[plane_index].unbindTexture();
}
}
@@ -1951,8 +1952,8 @@ public:
{
if (new_size.x > m_canvas->m_width)
{
m_canvas->resize((int)new_size.x, (int)new_size.y);
m_canvas->clear();
// m_canvas->resize((int)new_size.x, (int)new_size.y);
// m_canvas->clear();
}
}
virtual kEventResult handle_event(Event* e) override