我有一个 init()
方法,并且我正在尝试创建一个 Perspective
渲染。下面是我到目前为止的代码,但是我传递给 gluPerspective(fovy,spect, zNear, zFar) 的数字是错误的。我认为fovy
是视野(60度),aspect
是纵横比(宽度/高度),但我不知道zNear是什么
和 zFar
是。
public void init(GLAutoDrawable gld) {
//We will use the default ViewPort
GL gl = gld.getGL();
glu = new GLU();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glu.gluLookAt(
25, 15, 0, // eye
25, 15, 30, // at
0, 1, 0 // up
);
// Set up camera for Orthographic projection:
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(60, 500/300, 0.0, 60.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}
最佳答案
近端和远端值指定对象可见的范围(它们定义近端和远端剪裁 planes )。事实上,使用该视角将看不到距离超过 60.0
的物体。
正如 Tim 已经评论的那样,最好显式写入浮点值(即 500.0f/300.0f
)。
但更糟糕的是,您在将观察矩阵设置为恒等之前设置了它(假设在方法开始时矩阵模式为GL.GL_MODELVIEW
)。也许以下顺序更好:
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(...);
也许您需要研究更多有关相机抽象的信息。
关于java - 如何在 jogl 中使用 gluPerspective()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725028/