java - GL 错误值 1285 : Out of memory

标签 java opengl lwjgl

我正在尝试以几种不同的方式渲染一个简单的四边形。

当所有内容都存储在一个类中时,我可以很容易地做到这一点。但我希望能够在屏幕上呈现多个对象,所以我开始拆开代码并将各种功能放在单独的类中。问题是,当我将渲染功能放在 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 兆字节的图像文件,而且......我无法想象我的四顶点 float 缓冲区填满了我的所有 VRAM。

还有什么可能导致此错误?

最佳答案

仅供引用,我遇到了同样的错误,这是因为我未能添加对 glBufferData 的调用,这是您实际“发送数据”到 opengl 的地方。

glBufferData(GL_ARRAY_BUFFER, sizeof(GLSL_XYZNDUV_Item)*p->iNum_verts,p->pVerts,GL_STATIC_DRAW);

glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLushort)*p->iNum_tris*2,p->pIndices, GL_STATIC_DRAW);

关于java - GL 错误值 1285 : Out of memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593339/

相关文章:

c++ - OpenGL坐标是什么?忽略 OpenGL 窗口大小

c++ - 翻译以前绘制的元素 (OpenGL)

c++ - 如何在我的 OpenGL 应用程序中实现准确(但可变)的 FPS 限制/上限?

java - 为什么我在 OpenGL (3) 中的三角形不使用 lwjgl 渲染?

java - OpenGL 中模型 View 矩阵变换的现代方法?

java - 一一执行函数

java - Android Button OnClickListener 仅在单击其他按钮后触发

java - 在java中搜索 vector

java - 在 Play Framework 中使用 renderJSON 时排除数据成员

java - 带有 lwjgl 的任务栏图标?