C OpenGL空白屏幕

C OpenGL空白屏幕,c,linux,opengl,C,Linux,Opengl,我正试图在OpenGL中渲染一个白色正方形,我有这个函数来实现这一点: void main_loop(window_data *window) { printf("%s\n", glGetString(GL_VERSION)); GLuint vertex_array_objects, vertex_buffer_objects; glGenVertexArrays(1, &vertex_array_objects); glBindVertexArray

我正试图在OpenGL中渲染一个白色正方形,我有这个函数来实现这一点:

void main_loop(window_data *window)
{
    printf("%s\n", glGetString(GL_VERSION));

    GLuint vertex_array_objects, vertex_buffer_objects;
    glGenVertexArrays(1, &vertex_array_objects);
    glBindVertexArray(vertex_array_objects);
    glGenBuffers(1, &vertex_buffer_objects);
    glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_objects);

    GLfloat vertices[6][2] = {
        {-0.90, -0.90},
        {0.85, -0.90},
        {-0.90, 0.85},
        {0.90, -0.85},
        {0.90, 0.90},
        {-0.85, 0.90}};

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

    glVertexAttribPointer(0,
            2,
            GL_FLOAT,
            GL_FALSE,
            0,
            (void*)0);

    glEnableVertexAttribArray(0);

    while (!glfwWindowShouldClose(window->glfw_window))
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glBindVertexArray(vertex_array_objects);
        glDrawArrays(GL_TRIANGLES, 0, 6);
        glfwSwapBuffers(window->glfw_window);
        glfwPollEvents();
    }
    return;
}
这很好,但我试着把它分成两个函数,如下所示:

void initialize_image(GLuint *vArray, GLuint *vBuffer, GLfloat vertices[][2])
{
    glGenVertexArrays(1, vArray);
    glBindVertexArray(*vArray);
    glGenBuffers(1, vBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, *vBuffer);
    glBufferData(
            GL_ARRAY_BUFFER,
            sizeof(vertices),
            vertices,
            GL_STATIC_DRAW);
    glVertexAttribPointer(
            0,
            2,
            GL_FLOAT,
            GL_FALSE,
            0,
            (void*)0);
    glEnableVertexAttribArray(0);
    return;
}
然后我在主循环函数中调用它(就在while循环之前):

但这一直给我一个虚无的黑屏。
这可能是什么原因造成的?

将指针传递到顶点数组时,其sizeof()是指针大小,而不是数据大小


将附加的顶点大小参数传递给函数,并在glBufferData调用中使用它而不是sizeof。

可能与您引用的错误类型完全相同!哇-那是一个漂亮的接球。
    initialize_image(&vArray, &vBuffer, vertices);