OpenGL,剔除视图外的对象
OpenGL, Culling objects that are outside the view
在我的例子中,我想渲染 50,000 个或更多随机分布在一个大边界框内的立方体,我现在不想使用实例化,所以我必须渲染每个立方体,我想通过剔除来提高性能摄像机视图之外的立方体。
我有一个相机 class,它有两个矩阵 view
和 projection
,每个立方体都有自己的边界框,所以我打算检查每个帧是否相机视图边界框包含中心每个立方体的如果是调用它的绘制函数如果不是忽略它。
我有视图矩阵 3 个矢量眼睛、目标和向上,以及投影宽度、高度、近、远和 FOV。
所以我有两个问题:
- 这是一个正确的场景吗?我将计算每一帧的相机视图边界框,然后测试每个立方体。
- 如何计算每帧的相机边界框?
我从这里得到了一个想法 how_to_check_if_vertex_is_visible_for_user 对我来说效果很好。
将摄像机的投影视图矩阵乘以 3D 中的任意点 space 可见点应该在 [-1,1].
之间
在我的例子中,我想渲染 50,000 个或更多随机分布在一个大边界框内的立方体,我现在不想使用实例化,所以我必须渲染每个立方体,我想通过剔除来提高性能摄像机视图之外的立方体。
我有一个相机 class,它有两个矩阵 view
和 projection
,每个立方体都有自己的边界框,所以我打算检查每个帧是否相机视图边界框包含中心每个立方体的如果是调用它的绘制函数如果不是忽略它。
我有视图矩阵 3 个矢量眼睛、目标和向上,以及投影宽度、高度、近、远和 FOV。
所以我有两个问题:
- 这是一个正确的场景吗?我将计算每一帧的相机视图边界框,然后测试每个立方体。
- 如何计算每帧的相机边界框?
我从这里得到了一个想法 how_to_check_if_vertex_is_visible_for_user 对我来说效果很好。
将摄像机的投影视图矩阵乘以 3D 中的任意点 space 可见点应该在 [-1,1].
之间