MCPcopy Create free account
hub / github.com/alandefreitas/matplotplusplus / create_shaders

Method create_shaders

source/matplot/backend/opengl_embed.cpp:23–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21 }
22
23 void opengl_embed::create_shaders() {
24 // Create shaders
25 const char *draw_2d_single_color_vertex_shader_source =
26 "#version 330 core\n"
27 "layout (location = 0) in vec2 aPos;\n"
28 "uniform float windowHeight;\n"
29 "uniform float windowWidth;\n"
30 //"out vec4 vertexColor;\n"
31 "void main()\n"
32 "{\n"
33 " gl_Position = vec4((aPos.x/windowWidth)*2-1, (aPos.y/windowHeight)*2-1, 0.0, 1.0);"
34 //" vertexColor = aColor;\n"
35 "}\0";
36 unsigned int draw_2d_single_color_vertex_shader;
37 draw_2d_single_color_vertex_shader = glCreateShader(GL_VERTEX_SHADER);
38 glShaderSource(draw_2d_single_color_vertex_shader, 1, &draw_2d_single_color_vertex_shader_source, NULL);
39 glCompileShader(draw_2d_single_color_vertex_shader);
40 int success;
41 char info_log[512];
42 glGetShaderiv(draw_2d_single_color_vertex_shader, GL_COMPILE_STATUS, &success);
43 if (!success) {
44 glGetShaderInfoLog(draw_2d_single_color_vertex_shader, 512, NULL, info_log);
45 throw std::runtime_error(
46 std::string("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n") +
47 info_log);
48 }
49
50 // create and compile fragment shader
51 const char *draw_2d_single_color_fragment_shader_source =
52 "#version 330 core\n"
53 "out vec4 FragColor;\n"
54 "\n"
55 "uniform vec4 ourColor;\n"
56 "\n"
57 "void main()\n"
58 "{\n"
59 " FragColor = ourColor;\n"
60 "}";
61 unsigned int draw_2d_single_color_fragment_shader;
62 draw_2d_single_color_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
63 glShaderSource(draw_2d_single_color_fragment_shader, 1, &draw_2d_single_color_fragment_shader_source, NULL);
64 glCompileShader(draw_2d_single_color_fragment_shader);
65 glGetShaderiv(draw_2d_single_color_fragment_shader, GL_COMPILE_STATUS, &success);
66 if (!success) {
67 glGetShaderInfoLog(draw_2d_single_color_fragment_shader, 512, NULL, info_log);
68 throw std::runtime_error(
69 std::string("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n") +
70 info_log);
71 }
72
73 // Link shaders into shader program
74 draw_2d_single_color_shader_program_ = glCreateProgram();
75 glAttachShader(draw_2d_single_color_shader_program_, draw_2d_single_color_vertex_shader);
76 glAttachShader(draw_2d_single_color_shader_program_, draw_2d_single_color_fragment_shader);
77 glLinkProgram(draw_2d_single_color_shader_program_);
78 // check if linking was successful
79 glGetProgramiv(draw_2d_single_color_shader_program_, GL_LINK_STATUS, &success);
80 if (!success) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected