Chciałem wyrenderować trójkąt przy pomocy biblioteki OpenGL jednak tylko "czyści" mi okno, a nic nie renderuje ;/ Mimo iż wszystko zrobiłem jak w książce, oto kod:

To funkcja do zainicjowania biblioteki:

PIXELFORMATDESCRIPTOR pfd;    // pixel format descriptor structure

    pfd =               // pfd Tells Windows How We Want Things To Be
    {
        sizeof(PIXELFORMATDESCRIPTOR),              // Size Of This Pixel Format Descriptor
        1,                                          // Version Number
        PFD_DRAW_TO_WINDOW |                        // Format Must Support Window
        PFD_SUPPORT_OPENGL |                        // Format Must Support OpenGL
        PFD_DOUBLEBUFFER,                           // Must Support Double Buffering
        PFD_TYPE_RGBA,                              // Request An RGBA Format
        32,                                         // Select Our Color Depth
        0, 0, 0, 0, 0, 0,                           // Color Bits Ignored
        0,                                          // No Alpha Buffer
        0,                                          // Shift Bit Ignored
        0,                                          // No Accumulation Buffer
        0, 0, 0, 0,                                 // Accumulation Bits Ignored
        16,                                         // 16Bit Z-Buffer (Depth Buffer)  
        0,                                          // No Stencil Buffer
        0,                                          // No Auxiliary Buffer
        PFD_MAIN_PLANE,                             // Main Drawing Layer
        0,                                          // Reserved
        0, 0, 0                                     // Layer Masks Ignored
    };

    hUchwytKontekstu =  GetDC(hUchwytOkna);
    GLuint PixelFormat = ChoosePixelFormat(hUchwytKontekstu, &pfd);
    SetPixelFormat(hUchwytKontekstu, PixelFormat, &pfd);
    hUchwytRendera = wglCreateContext(hUchwytKontekstu);
    wglMakeCurrent(hUchwytKontekstu, hUchwytRendera);

    if (glewInit())
        MessageBox(0, L"Brak mozliwosci zainicjowania glew!", L"Error", MB_ICONERROR);

    glGenVertexArrays(1, &VAO);
    glBindVertexArray(VAO);

    glViewport(0, 0, 400, 400);
    glClearColor(1, 0, 0, 1);
    glEnable(GL_TEXTURE_2D);
    ShaderProgram = ZaladujShader("vertex.vers", "fragment.fras");
    Uniform_macierz_transf = glGetUniformLocation(ShaderProgram, "mvp");
    Attribute_polozenie_wierz = glGetAttribLocation(ShaderProgram, "textureposition");
    static const GLfloat g_vertex_buffer_data[] = {
        -50.0, 50.0, 0.0f,
        -50.0, 0.0f, 0.0f,
        50.0f, 0.0f, 0.0f,

        50.0, 50.0, 0.0f,
        -50.0, 50.0f, 0.0f,
        50.0f, 0.0f, 0.0f,

        -50.0, 50.0, 0.0f,
        -50.0, 0.0f, 0.0f,
        50.0f, 0.0f, 0.0f,
    };

    glGenBuffers(1, &nBuffor1);
    glBindBuffer(GL_ARRAY_BUFFER, nBuffor1);
    glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);

    macierzmvp = glm::mat4(1.0f);
    macierzmvp = glm::ortho(-200.0, 200.0, -200.0, 200.0);
    wglMakeCurrent(NULL, NULL); 

A tutaj do wyrenderowania trójkąta:

 wglMakeCurrent(hUchwytKontekstu, hUchwytRendera);
    glUseProgram(ShaderProgram);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glUniformMatrix4fv(Uniform_macierz_transf, 0, FALSE, &macierzmvp[0][0]);
    // 1rst attribute buffer : vertices
    glEnableVertexAttribArray(Attribute_polozenie_wierz);
    glBindBuffer(GL_ARRAY_BUFFER, nBuffor1);
    glVertexAttribPointer(
        0,                  // attribute 0. No particular reason for 0, but must match the layout in the shader.
        3,                  // size
        GL_FLOAT,           // type
        GL_FALSE,           // normalized?
        0,                  // stride
        (void*)0            // array buffer offset
        );

    // Draw the triangle !
    glDrawArrays(GL_TRIANGLES, 0, 3); // 3 indices starting at 0 -> 1 triangle

    glDisableVertexAttribArray(Attribute_polozenie_wierz);

    SwapBuffers(hUchwytKontekstu);
    wglMakeCurrent(NULL, NULL);

Podstawowy shader wierzchołków:

 #version 120

attribute vec3 vertexposition;
uniform mat4 mvp;

mat4 mac;

void main()
{
    gl_Position = mvp * vec4(vertexposition.xy, 0, 1);
}

I fragmentów:

 #version 120

void main()
{
    gl_FragColor = vec4(1, 1, 1, 1);
}

Sprawdziłem chyba wszystkie możliwości i nadal nic tylko czyści mi na czerwono okno i nie widzę żadnego trójkąta :(