Почему треугольник не отображается на экране?
Код должен рисовать белый треугольник. Шейдеры скомпилированы правильно.
Основной код:
LoadShader();
UseShader();
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
const float vertices[] =
{
-0.5, -0.5,
0, 0.5,
0.5, -0.5
};
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), &vertices, GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, (void*)0);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);
SDL_GL_SwapWindow(window);
Программа шейдера:
GLuint shader;
void LoadShader()
{
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
const char* vsSource = R"glsl(
#version 150
in vec2 position;
//uniform mat4 model;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
}
)glsl";
glShaderSource(vs, 1, &vsSource, nullptr);
glCompileShader(vs);
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
const char* fsSource = R"glsl(
#version 150
void main()
{
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
)glsl";
glShaderSource(fs, 1, &fsSource, nullptr);
glCompileShader(fs);
shader = glCreateProgram();
glAttachShader(shader, vs);
glAttachShader(shader, fs);
glLinkProgram(shader);
}
void UseShader()
{
glUseProgram(shader);
}
Источник: Stack Overflow на русском