LWJGL 3 着色器版本 150 及以上无渲染
LWJGL 3 Shaders version 150 and above rendering nothing
我在 OSX 上使用 LWJGL 3。当使用版本 <150 但将代码移植到 330 时,着色器工作正常。
我的着色器尽可能简单:
顶点着色器:
#version 330 core
in vec3 position;
void main(void) {
gl_Position = vec4(position, 1.0);
}
片段着色器:
#version 330 core
out vec4 outColour;
void main(void) {
outColour = vec4(1.0, 0.0, 0.0, 1.0);
}
我创建了一个像这样的简单三角形 (Scala):
val vertices = Array(
0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f
)
val vertexBuffer = BufferUtils.createFloatBuffer(vertices.length)
vertexBuffer.put(vertices)
vertexBuffer.flip()
val buffer = GL15.glGenBuffers()
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, buffer)
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuffer, GL15.GL_STATIC_DRAW)
然后我画成这样:
GL20.glUseProgram(shader)
GL20.glEnableVertexAttribArray(0)
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, buffer)
GL20.glBindAttribLocation(shader, 0, "position")
GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0)
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, 9)
GL20.glDisableVertexAttribArray(0)
GL20.glUseProgram(0)
着色器编译正常,程序运行,但我只是得到一个空白屏幕!我的代码有什么明显的错误吗?
Vertex Array Objects (VAOs) 是在 Core 上下文中呈现所必需的。在兼容性上下文中,它们是可选的。
但是,如果您觉得懒惰,您可以只在启动时生成一个,然后将其绑定:)
我在 OSX 上使用 LWJGL 3。当使用版本 <150 但将代码移植到 330 时,着色器工作正常。
我的着色器尽可能简单:
顶点着色器:
#version 330 core
in vec3 position;
void main(void) {
gl_Position = vec4(position, 1.0);
}
片段着色器:
#version 330 core
out vec4 outColour;
void main(void) {
outColour = vec4(1.0, 0.0, 0.0, 1.0);
}
我创建了一个像这样的简单三角形 (Scala):
val vertices = Array(
0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f
)
val vertexBuffer = BufferUtils.createFloatBuffer(vertices.length)
vertexBuffer.put(vertices)
vertexBuffer.flip()
val buffer = GL15.glGenBuffers()
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, buffer)
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuffer, GL15.GL_STATIC_DRAW)
然后我画成这样:
GL20.glUseProgram(shader)
GL20.glEnableVertexAttribArray(0)
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, buffer)
GL20.glBindAttribLocation(shader, 0, "position")
GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0)
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, 9)
GL20.glDisableVertexAttribArray(0)
GL20.glUseProgram(0)
着色器编译正常,程序运行,但我只是得到一个空白屏幕!我的代码有什么明显的错误吗?
Vertex Array Objects (VAOs) 是在 Core 上下文中呈现所必需的。在兼容性上下文中,它们是可选的。
但是,如果您觉得懒惰,您可以只在启动时生成一个,然后将其绑定:)