【发布时间】:2013-08-22 19:56:52
【问题描述】:
我正在学习尝试使用 Java 和 LWJGL 学习 GLSL,但我目前在使用基本顶点着色器时遇到问题。
顶点着色器:
#version 120
void main() {
gl_Position = gl_Vertex * 0.5;
}
片段着色器:
#version 120
void main() {
gl_FragColor = vec4(1.0, 0.4, 0.4, 1.0);
}
渲染代码:
public void draw() {
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLES, size, GL_UNSIGNED_INT, 0);
glDisableClientState(GL_VERTEX_ARRAY);
}
编译没有产生错误,片段着色器工作正常,为我绘制的简单三角形着色。唯一的问题是我没有看到按预期缩小的三角形(0.5 因子),它的顶点保持不变。我做错了什么?
【问题讨论】:
-
您确定程序已绑定并启用?
-
是的,片段着色器正在工作。
-
gl_Position = gl_Vertex * 0.5将修改包括 w 分量在内的整个 4 维向量。做类似gl_Position = vec4(gl_Vertex.xyz * 0.5, 1.0)
标签: java opengl lwjgl vertex-shader