我在尝试运行简单的 Java 代码以使用着色器渲染简单的三角形时遇到问题。在 Windows 中它运行良好 screenshot , 在 Linux 中它只显示黑屏。
我正在使用 Ubuntu 14.10 和 Mesa 10.1.3,以及 lwjgl作为框架。
这是我的主要绘图功能的代码:
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);
}
这是用于测试目的的简单代码的完整版本:code .
编辑:多次运行相同代码后,其中一个绘制this ,我无法复制它。
最佳答案
目前最大的问题是您拥有核心配置文件上下文,但您没有使用顶点数组对象。为什么 Windows 允许这样做,很难说,但 Linux 提供了您期望的行为。
您将需要在您的软件中至少创建并绑定(bind)一个顶点数组对象一次,因为这是编写 3.3 核心配置文件 软件的必需步骤。
如果将此添加到 Main.create (...)
,您将拥有符合 3.3 标准的核心代码:
int vao = GL30.glGenVertexArrays ();
GL30.glBindVertexArray (vao);
关于java - 使用着色器在 Windows 中工作但在 Linux 中不工作的 OpenGL 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957768/