我有init()
方法,我正在尝试创建Perspective
渲染。下面是我到目前为止的代码,但是我传递给gluPerspective(fovy, aspect, zNear, zFar)
的数字是错误的。我认为fovy
是视野(60度),aspect
是宽高比(宽度/高度),但我不知道zNear
和{{1}是的。
zFar
答案 0 :(得分:2)
near和far值指定对象可见的范围(它们定义近剪切和远剪裁planes)。事实上,使用这种观点看不到比60.0
更远的物体。
正如 Tim 已经评论过,明确写入浮点值(即500.0f/300.0f
)更合适。
但更糟糕的是,在将其设置为identity之前设置了look-at矩阵(假设在方法开始时矩阵模式为GL.GL_MODELVIEW
)。可能以下顺序更好:
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(...);
也许您需要调查有关相机抽象的更多信息。
答案 1 :(得分:0)
就像卢卡已经说过的那样,近和远定义了可见物体的范围。但最重要的是,永远不要使用值<= 0表示近或远值(您当前所做的),因为这会产生一个奇异的投影矩阵(会产生任何奇怪的渲染结果)。
对近剪裁平面使用一些相当小的值,但不要太小,因为这会导致深度缓冲区精度不佳。使用合理的东西,例如在建模普通真实世界时,近10cm的距离通常是一个不错的选择(无论在实际应用中这意味着多少通用单位),因为你不会让你的眼睛更接近任何物体。但这取决于您的应用程序,例如远远值。
当然,就像蒂姆所说,目前你的宽高比是1.0,因为你做了整数除法。