我正在尝试以几种不同的方式渲染一个简单的四边形。
当所有内容都存储在一个类中时,我可以很容易地做到这一点。但我希望能够在屏幕上渲染多个对象,因此我开始将代码分开并将各种功能放在单独的类中。问题是,当我将渲染功能放在 Entity 类中时,我开始收到错误消息。
这是函数,它是一个 VertexArrayObject 类:
public void render(){
glBindVertexArray(vaoID);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboiID);
this.exitOnGLError("Before render");
glDrawElements(GL_TRIANGLES, indicesCount, GL_UNSIGNED_BYTE, 0);
this.exitOnGLError("After render");
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glBindVertexArray(0);
this.exitOnGLError("error rendering vao");
}
同样,我所做的只是将它从主类移到一个管理 VAO 并在理论上呈现它的类。
它给了我错误值 1285,得到错误的错误调用是标记为“渲染后”的错误调用。(exitOnGLError() 是一种错误检查方法)。
错误 1285 显然意味着“内存不足”,这显然是荒谬的,因为我使用的是 1 兆字节的图像文件并且......我无法想象我的四个顶点浮动缓冲区正在填满我所有的 VRAM。
还有什么可能导致此错误?