C ++ OpenGL, tekenvormen retourneert een fout

stemmen
0

Ik probeer te vormen op mijn aanvraag te tekenen. Ik heb toegevoegd #include <glad/glad.h>in mijn code.

Ik zette mijn vertex array, vertex buffer & index buffer als unsigned integers in mijn header-bestand.

In mijn application.h bestand toegevoegd ik dit:

unsigned int m_FCvertexArray; // Textured Phong VAO
unsigned int m_FCvertexBuffer;// Textured Phong VBO
unsigned int m_FCindexBuffer; // Index buffer for texture Phong cube

In mijn application.cpp in mijn constructor toegevoegd ik dit:

Application::Application()
{
    //------------- OPENGL VALUES -----------//

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    // Enabling backface culling to ensure triangle vertices are correct ordered (CCW)

    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);

    ////--------DRAW VERTICES---------//

    float FCvertices[3 * 3] = {
                -0.5f, -0.5f, 0.0f,
                 0.5f, -0.5f, 0.0f,
                 0.0f,  0.5f, 0.0f
            };

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

    glCreateBuffers(1, &m_FCvertexBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, m_FCvertexBuffer);

    //
    //

    glBufferData(GL_ARRAY_BUFFER, sizeof(FCvertices), FCvertices, GL_STATIC_DRAW);

    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(1);
    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(sizeof(float) * 3));


    ////--------DRAW INDICES---------//

    glCreateBuffers(1, &m_FCindexBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, m_FCindexBuffer);

    unsigned int indices[3] = {0, 1, 2};

    glBufferData(GL_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
}

in mijn void Application::run()I toegevoegd:

glUseProgram(m_FCprogram);
glBindVertexArray(m_FCvertexArray);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, nullptr);

nu het probleem is wanneer ik de code uit te voeren, het geeft me het in de titel genoemde fout:

Uitzondering gegooid naar 0x000000005D78F420 (nvoglv64.dll) in Sandbox.exe: 0xC0000005: Access violation lezen locatie 0x0000000000000000.

Ik heb geprobeerd manieren om dit op te lossen, maar het lijkt niet te werken. en als ik commentaar uit glDrawElements, de code loopt en werkt, maar geen vormen worden getekend (duidelijke).

De vraag is gesteld op 13/01/2020 om 23:51
bron van user
In andere talen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more