java - 如何在 jogl 中使用 gluPerspective()?

标签 java opengl jogl perspective perspectivecamera

我有一个 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/

相关文章:

java - 如何修复 Java 1.5.0 中不正确的时区偏移量?

Java 字段验证

java - FPS OpenGL 中的鼠标移动(甚至在窗口外)

java - 在 OpenGL 中加载 UDEC3 或 DEC3N 数据类型

java - 如何旋转由旋转的各个部分聚合而成的形状?

java - 这个Java语法是什么意思? (`Class<? extends ContactAccessor> clazz`)

java - 将 JSON 反序列化为 Java 对象时,如何将父属性映射到子对象?

objective-c - 在NSView中绘制波形

c++ - Opengl C++ : texture code textures all models with the same texture

c++ - cmake/C++ : which package contains `-lOpenGLSupport`