いくつかの異なる方法で単純なクワッドをレンダリングしようとしています。
すべてが1つのクラスに格納されている場合、これを非常に簡単に行うことができます。しかし、画面上に複数のオブジェクトをレンダリングできるようにしたいので、コードを分解して、さまざまな機能を別々のクラスに配置し始めています。問題は、レンダリング機能を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メガバイトの画像ファイルを使用しているため明らかにばかげています...4つの頂点のフロートバッファがすべてのVRAMをいっぱいにしているとは想像できません。
他に何がこのエラーを引き起こしている可能性がありますか?