【问题标题】:Increasing OpenGL's far clip plane distance增加 OpenGL 的远裁剪平面距离
【发布时间】:2012-12-07 03:05:19
【问题描述】:

我正在尝试制作我们太阳系的 C++ OpenGL 表示,作为自学 OpenGL 的一种方式,因此请保持您的答案简单。 我遇到的问题是行星距离很远,所以从任何给定的行星观看时,其他一切都超出了剪切平面。 如何将 C++ OpenGL 3.1 平面的剪裁移动到 2000000000 如果可以的话,我更喜欢简单的代码 sn-p。 我已经查看了有关此问题的 SO 和论坛帖子,但它们要么太旧以至于什么都不适用(使用旧版 API 或只是死链接),要么太复杂以至于我无法弄清楚他们在说什么。

【问题讨论】:

标签: visual-c++ clipping opengl-3


【解决方案1】:

剪切平面由透视投影矩阵定义。

如果您使用glFrustum,请将传递给它的最后一个参数更改为 2000000000.0。

如果您使用自己的矩阵,请将矩阵数组的第 10 个元素设置为:

(2000000000.0+nearClippingPlane)/(nearClippingPlane-2000000000.0)

(公式为(far+near)/(near-far)

14 日至:

(-4000000000.0*nearClippingPlane)/(2000000000.0-nearClippingPlane)

(公式为(-2.0*near*far)/(far-near)

2000000000 是非常大的值,但是如果添加山脉等细节,可能会发生 Z-fighting。

【讨论】:

  • 谢谢!我不知道这是否可行,因为目标项目不再处于开发阶段。我会假设你是对的,除非另有证明:3
  • 不,我错了,我写的第 10 个元素的公式不正确,我修好了。
猜你喜欢
  • 2012-10-08
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 2011-11-24
  • 2011-05-27
  • 2016-07-27
相关资源
最近更新 更多