C ++ OpenGL, dessin de formes retourne une erreur

voix
0

Je suis en train de dessiner des formes sur ma demande. J'ai ajouté #include <glad/glad.h>dans mon code.

Je mis mon tableau de vertex, vertex buffer et tampon index comme ints non signés dans mon dossier d'en-tête.

Dans mon application.h j'ai ajouté ce fichier:

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

J'ai ajouté dans mon application.cpp dans mon constructeur:

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

dans mon void Application::run()I ajouté:

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

maintenant le problème est quand je lance le code, il me donne l'erreur mentionnée sur le titre:

Exception levée à 0x000000005D78F420 (nvoglv64.dll) en Sandbox.exe: 0xC0000005: violation d'accès lecture emplacement 0x0000000000000000.

Je l'ai essayé façons de résoudre ce mais il semble ne pas fonctionner. et si je commente sur glDrawElements, les pistes de code et des œuvres, mais pas de formes sont tirées (évidente).

Créé 13/01/2020 à 23:51
source utilisateur
Dans d'autres langues...                            

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