Skip to content

File shaders.cpp

File List > gui > shaders.cpp

Go to the documentation of this file

#include "gui/shaders.hpp"

#include <QFile>
#include <QTextStream>

#include "gui/point_cloud_visualization.hpp"

QString load_shader_source(const QString& resource_path) {
  QFile file(resource_path);
  if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    std::cerr << "Failed to open shader resource: " << resource_path.toStdString() << std::endl;
    return QString();
  }
  QTextStream in(&file);
  return in.readAll();
}

QString get_point_vertex_shader() {
  QString source = load_shader_source(":/shaders/point_vertex.glsl");
  if (source.isEmpty()) {
    return QString();
  }

  // Inject classification color function
  QString classification_glsl = QString::fromStdString(classification_color_glsl());
  source.replace("// CLASSIFICATION_COLOR_FUNCTION", classification_glsl);

  return source;
}

QString get_point_fragment_shader() { return load_shader_source(":/shaders/point_fragment.glsl"); }

QString get_mesh_vertex_shader() { return load_shader_source(":/shaders/mesh_vertex.glsl"); }

QString get_mesh_fragment_shader() { return load_shader_source(":/shaders/mesh_fragment.glsl"); }

QString get_textured_mesh_vertex_shader() {
  return load_shader_source(":/shaders/textured_mesh_vertex.glsl");
}

QString get_textured_mesh_fragment_shader() {
  return load_shader_source(":/shaders/textured_mesh_fragment.glsl");
}