Почему треугольник не отображается на экране?

Рейтинг: 0Ответов: 0Опубликовано: 13.05.2023

Код должен рисовать белый треугольник. Шейдеры скомпилированы правильно.

Основной код:

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);
}

Ответы

Ответов пока нет.