我在尝试运行一个简单的java代码来使用着色器渲染一个简单的三角形时遇到了问题。在windows下,它工作得很好,而在linux中,它只显示一个黑屏。
我正在使用ubuntu 14.10和mesa 10.1.3,并且screenshot作为框架。
以下是我的主要绘图功能的代码:
private static void render() {
GL20.glEnableVertexAttribArray(0);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo);
GL20.glVertexAttribPointer(0, 3, GL11.GL_DOUBLE, false, Vertex.BYTES, 0);
GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, ibo);
GL11.glDrawElements(GL11.GL_TRIANGLES, vertices.size(), GL11.GL_UNSIGNED_INT, 0);
GL20.glDisableVertexAttribArray(0);
}
以下是用于测试目的的简单代码的完整版本:lwjgl。
编辑:在多次运行相同的代码之后,其中一个绘制了code,而我无法复制它。
最佳答案
现在最大的问题是您有一个核心配置文件上下文,但您没有使用顶点数组对象。很难说windows为什么允许这样做,但linux却提供了您所期望的行为。
您需要在软件中至少创建和绑定一次顶点数组对象,因为这是编写3.3核心概要文件软件所必需的步骤。
如果将其添加到Main.create (...)
,则将具有兼容的3.3核心代码:
int vao = GL30.glGenVertexArrays ();
GL30.glBindVertexArray (vao);