C ++ OpenGL, Zeichnen von Formen zurückkehren einen Fehler

stimmen
0

Ich versuche , Formen auf meine Anwendung zu ziehen. Ich habe hinzugefügt , #include <glad/glad.h>in meinen Code.

Ich stelle meine Vertex-Array, Vertex Buffer & Index als unsigned ints in meinem Header-Datei puffern.

In meiner application.h Datei hinzugefügt ich dies:

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 meinem application.cpp in meinem Konstruktor habe ich dies:

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 meine void Application::run()ich hinzu:

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

jetzt das Problem ist, wenn ich den Code ausführen, ist es mir den Fehler auf dem Titel erwähnt gibt:

Ausnahme ausgelöst bei 0x000000005D78F420 (nvoglv64.dll) in Sandbox.exe: 0xC0000005: Zugriffsverletzung Leseort 0x0000000000000000.

Ich habe Wege versucht, dieses Problem zu beheben, aber es scheint nicht zu funktionieren. und wenn ich glDrawElements Kommentar aus, der Code ausgeführt wird und funktioniert, aber keine Formen gezeichnet werden (offensichtlich).

Veröffentlicht am 13/01/2020 um 23:51
quelle vom benutzer
In anderen Sprachen...                            

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