glGetBufferSubData()没有返回任何数据?

时间:2018-05-14 02:42:25

标签: c++ opengl

我已尝试在下面的示例中运行代码。但是,在调用glGetBufferSubData之后,数据会保留它的默认值,并且不会获取存储在bufferObject [0]中的值,这些值等于顶点中的值。我错误地使用了glGetBufferSubData吗?

    glBindVertexArray(arrayObject);
    glGenBuffers(1, &bufferObject[0]);
    glBindBuffer(GL_ARRAY_BUFFER, bufferObject[0]);
    glBufferData(GL_ARRAY_BUFFER, numVertices * sizeof(Vector3), vertices, GL_STATIC_DRAW);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glEnableVertexAttribArray(0);

    Vector3 *data = new Vector3();

    glGetBufferSubData(bufferObject[0], 0, numVertices * sizeof(Vector3), data);

1 个答案:

答案 0 :(得分:3)

glGetBufferSubData(bufferObject[0], 0, numVertices * sizeof(Vector3), data);
                   ^^^^^^^^^^^^^^^ nope

glGetBufferSubData()target参数应指定绑定点,而不是缓冲区对象。请尝试GL_ARRAY_BUFFER

glGetBufferSubData(GL_ARRAY_BUFFER, 0, numVertices * sizeof(Vector3), data);