GLSL移动3D模型位置

时间:2014-09-07 10:59:40

标签: java glsl lwjgl vertex-shader

我试图使用GLSL顶点着色器移动我的3D对象。它有点工作,它会在x和y轴上移动细粒但是它并没有真正在z轴上移动但是它确实做了一些事情,因为如果我向前或向后走太远,它会使对象消失。我想我可能使用了错误的方法。

我的顶点着色器文件:

uniform vec3 offset;

void main(){
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = ftransform() + vec4(offset, 0);
}

我用来发送坐标的行: GL20.glUniform3f(offsetUniformLocation, x, y, z);

我只想移动物体。就像glTranslatef一样(但是这已被弃用,所以我试图避免使用它)。感谢。

1 个答案:

答案 0 :(得分:1)

gl_Position位于屏幕坐标

  • 更改xy会在屏幕上水平或垂直移动顶点(分别)。
  • 更改z将更改深度值(用于深度检查),并可能将顶点移出相机的框。在屏幕坐标中,世界的可见部分是一个[-1,1] x [-1,1] x [-1,1]的框。因此,如果z超出此范围,则您的顶点不再可见。 (确切地说,将position.w替换为1)

您可能想要在世界坐标中移动顶点。如何操作取决于ftransform()功能。