QOpenGLShaderProgram* Viewer::getShaderProgram(int name) const { switch(name) { case PROGRAM_C3T3: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_c3t3.v" , ":/cgal/Polyhedron_3/resources/shader_c3t3.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_c3t3.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_c3t3.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("hasCutPlane", true); program->setProperty("hasTransparency", true); return program; } case PROGRAM_C3T3_EDGES: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_c3t3_edges.v" , ":/cgal/Polyhedron_3/resources/shader_c3t3_edges.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_c3t3_edges.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_c3t3_edges.f"); program->setProperty("hasCutPlane", true); return program; } case PROGRAM_WITH_LIGHT: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_with_light.v" , ":/cgal/Polyhedron_3/resources/shader_with_light.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_light.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_light.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("hasTransparency", true); return program; } case PROGRAM_WITHOUT_LIGHT: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_without_light.v" , ":/cgal/Polyhedron_3/resources/shader_without_light.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_without_light.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_without_light.f"); program->setProperty("hasFMatrix", true); return program; } case PROGRAM_NO_SELECTION: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_without_light.v" , ":/cgal/Polyhedron_3/resources/shader_no_light_no_selection.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_without_light.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_no_light_no_selection.f"); program->setProperty("hasFMatrix", true); return program; } case PROGRAM_WITH_TEXTURE: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_with_texture.v" , ":/cgal/Polyhedron_3/resources/shader_with_texture.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_texture.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_texture.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("hasFMatrix", true); program->setProperty("hasTexture", true); return program; } case PROGRAM_PLANE_TWO_FACES: { QOpenGLShaderProgram* program = isOpenGL_4_3() ?declare_program(name, ":/cgal/Polyhedron_3/resources/shader_without_light.v" , ":/cgal/Polyhedron_3/resources/shader_plane_two_faces.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_without_light.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_plane_two_faces.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); return program; } case PROGRAM_WITH_TEXTURED_EDGES: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_with_textured_edges.v" , ":/cgal/Polyhedron_3/resources/shader_with_textured_edges.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_textured_edges.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_textured_edges.f"); program->setProperty("hasFMatrix", true); program->setProperty("hasTexture", true); return program; } case PROGRAM_INSTANCED: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_instanced.v" , ":/cgal/Polyhedron_3/resources/shader_with_light.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_instanced.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_light.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("isInstanced", true); return program; } case PROGRAM_INSTANCED_WIRE: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_instanced.v" , ":/cgal/Polyhedron_3/resources/shader_without_light.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_instanced.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_without_light.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("hasBarycenter", true); program->setProperty("isInstanced", true); return program; } case PROGRAM_CUTPLANE_SPHERES: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_c3t3_spheres.v" , ":/cgal/Polyhedron_3/resources/shader_c3t3.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_c3t3_spheres.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_c3t3.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("hasBarycenter", true); program->setProperty("hasRadius", true); program->setProperty("isInstanced", true); return program; } case PROGRAM_SPHERES: { QOpenGLShaderProgram* program = isOpenGL_4_3() ?declare_program(name, ":/cgal/Polyhedron_3/resources/shader_spheres.v" , ":/cgal/Polyhedron_3/resources/shader_with_light.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_spheres.v" , ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_light.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); program->setProperty("hasBarycenter", true); program->setProperty("hasRadius", true); program->setProperty("hasTransparency", true); program->setProperty("isInstanced", true); return program; } case PROGRAM_FLAT: { if(!isOpenGL_4_3()) { std::cerr<<"An OpenGL context of version 4.3 is required for the program ("<<name<<")."<<std::endl; return 0; } QOpenGLShaderProgram* program = declare_program(name, ":/cgal/Polyhedron_3/resources/shader_flat.v", ":/cgal/Polyhedron_3/resources/shader_flat.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); return program; } case PROGRAM_OLD_FLAT: { QOpenGLShaderProgram* program = isOpenGL_4_3() ? declare_program(name, ":/cgal/Polyhedron_3/resources/shader_with_light.v", ":/cgal/Polyhedron_3/resources/shader_old_flat.f") : declare_program(name, ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_with_light.v", ":/cgal/Polyhedron_3/resources/compatibility_shaders/shader_old_flat.f"); program->setProperty("hasLight", true); program->setProperty("hasNormals", true); return program; } case PROGRAM_SOLID_WIREFRAME: if(!isOpenGL_4_3()) { std::cerr<<"An OpenGL context of version 4.3 is required for the program ("<<name<<")."<<std::endl; return 0; } return declare_program(name, ":/cgal/Polyhedron_3/resources/solid_wireframe_shader.v", ":/cgal/Polyhedron_3/resources/solid_wireframe_shader.f"); break; default: std::cerr<<"ERROR : Program not found."<<std::endl; return 0; } }