Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jogl中使用gluPerspective()?_Java_Opengl_Jogl_Perspective_Perspectivecamera - Fatal编程技术网

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)