Welcome to mirror list, hosted at ThFree Co, Russian Federation.

render_node.cpp « drape_frontend - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3792708e85767cba951d3d71774c1830b9ec0b70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "render_node.hpp"

#include "drape/vertex_array_buffer.hpp"
#include "drape/gpu_program_manager.hpp"

namespace df
{

RenderNode::RenderNode(dp::GLState const & state, drape_ptr<dp::VertexArrayBuffer> && buffer)
  : m_state(state)
  , m_buffer(move(buffer))
  , m_isBuilded(false)
{
}

void RenderNode::Render(ref_ptr<dp::GpuProgramManager> mng, dp::UniformValuesStorage const & uniforms,
                        dp::IndicesRange const & range)
{
  Apply(mng, uniforms);
  m_buffer->RenderRange(m_state.GetDrawAsLine(), range);
}

void RenderNode::Render(ref_ptr<dp::GpuProgramManager> mng, dp::UniformValuesStorage const & uniforms)
{
  Apply(mng, uniforms);
  m_buffer->Render(m_state.GetDrawAsLine());
}

void RenderNode::Apply(ref_ptr<dp::GpuProgramManager> mng, dp::UniformValuesStorage const & uniforms)
{
  ref_ptr<dp::GpuProgram> prg = mng->GetProgram(m_state.GetProgramIndex());
  prg->Bind();
  if (!m_isBuilded)
  {
    m_buffer->Build(prg);
    m_isBuilded = true;
  }

  dp::ApplyState(m_state, prg);
  dp::ApplyUniforms(uniforms, prg);
}

}