Java 如何在jogl中使用gluPerspective()?
我有一个Java 如何在jogl中使用gluPerspective()?,java,opengl,jogl,perspective,perspectivecamera,Java,Opengl,Jogl,Perspective,Perspectivecamera,我有一个init()。下面是我到目前为止的代码,但是我传递给glupperspective(fovy、aspect、zNear、zFar)的数字是错误的。我认为fovy是视野(60度),而aspect是纵横比(宽/高),但我不知道zNear和zFar是什么 public void init(GLAutoDrawable gld) { //We will use the default ViewPort GL gl = gld.getGL(); glu = new GL
init()。下面是我到目前为止的代码,但是我传递给glupperspective(fovy、aspect、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();
}
“近”和“远”值指定对象可见的范围(它们定义近剪裁和远剪裁)。实际上,使用该透视图将看不到距离60.0
更远的对象
正如Tim所评论的,最好显式地编写浮点值(即500.0f/300.0f
)
但更糟糕的是,在将其设置为identity(假设在方法的开头,矩阵模式为GL.GL\u MODELVIEW
)之前,先设置look-at矩阵。按以下顺序可能更好:
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(...);
也许你需要研究更多关于相机抽象的东西。就像卢卡已经说过的,近距离和远距离定义了可见物体的范围。但最重要的是,不要使用任何值。您是否阅读了手册页。此外,您正在对aspect进行整数除法,您需要改为使用浮点除法,否则它会将500/300取整为1。(500.f/300.f)