16 const std::string& fragmentSource)
18 GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
19 const char* vertexShaderCStr = vertexSource.c_str();
20 glShaderSource(vertexShader, 1, &vertexShaderCStr,
nullptr);
21 glCompileShader(vertexShader);
24 glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
28 glGetShaderInfoLog(vertexShader, 512,
nullptr, infoLog);
29 std::cerr <<
"ERROR:VERTEX_SHADER_COMPILATION_FAILED: " << infoLog << std::endl;
33 GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
34 const char* fragmentShaderSourceCStr = fragmentSource.c_str();
35 glShaderSource(fragmentShader, 1, &fragmentShaderSourceCStr,
nullptr);
36 glCompileShader(fragmentShader);
38 glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
42 glGetShaderInfoLog(fragmentShader, 512,
nullptr, infoLog);
43 std::cerr <<
"ERROR:FRAGMENT_SHADER_COMPILATION_FAILED: " << infoLog << std::endl;
47 GLuint shaderProgramID = glCreateProgram();
48 glAttachShader(shaderProgramID, vertexShader);
49 glAttachShader(shaderProgramID, fragmentShader);
50 glLinkProgram(shaderProgramID);
52 glGetProgramiv(shaderProgramID, GL_LINK_STATUS, &success);
56 glGetProgramInfoLog(shaderProgramID, 512,
nullptr, infoLog);
57 std::cerr <<
"ERROR:SHADER_PROGRAM_LINKING_FAILED: " << infoLog << std::endl;
61 glDeleteShader(vertexShader);
62 glDeleteShader(fragmentShader);
64 return std::make_shared<ShaderProgram>(shaderProgramID);
206 glBufferData(GL_ARRAY_BUFFER, vertices.size() *
sizeof(
float), vertices.data(), GL_STATIC_DRAW);
216 glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() *
sizeof(uint32_t), indices.data(), GL_STATIC_DRAW);