Example #1
0
void DebugDraw::render(const fsengine::system::iCamera &camera) {
  if (m_buffer.empty()) {
    return;
  }
  bool ret = false;

  ret = m_shader.activate();
  ASSERT(ret);

  // Set Projection
  Matrix44 camMat = camera.getRotMatrix();
  camMat.pos() = camera.getPos().asVec4();
  const Matrix44 mpMat =
    core::math::Matrix44Projection(camera.getFov(), camera.getAspectRatio(), 0.001f, 1024.000f)
    * core::math::Matrix44Inverse(camMat);
  const Matrix44f mpMatf = mpMat.asMatrix44f();
  ret = m_pProjViewMat->set(16, &mpMatf.m_v[0]);
  ASSERT(ret);

  // Set identity model
  const Matrix44f modelMat = core::math::G_IdentityMatrix44.asMatrix44f();
  ret = m_pModelMat->set(16, &modelMat.m_v[0]);
  ASSERT(ret);

  ret = m_shader.updateUniforms();
  ASSERT(ret);

  // Render VBO
  m_vbo.drawStart();
  m_vbo.setData(&m_buffer[0], m_buffer.size(), GL_DYNAMIC_DRAW);
  m_vbo.draw(GL_LINES);
  m_vbo.drawEnd();

  ret = m_shader.deactivate();
  ASSERT(ret);
}