OpenGL:屏幕上 3D 边界框的大小

标签 opengl

我需要一种简单快速的方法,通过使用 OpenGL 模型 View 和投影矩阵以及 OpenGL 视口(viewport)尺寸来找出屏幕上显示的 3D 边界框有多大(用于 LOD 计算)。

我的第一个意图是使用 gluProject() 将所有 8 个盒子角投影到屏幕上,然后计算凸包的面积。此解决方案仅适用于完全位于视锥体内的边界框。

但是如何才能获得屏幕上未完全位于观看范围内的框的覆盖区域呢?想象一个盒子,其中 7 个角位于近平面后面,只有一个角位于近平面前面,因此位于视锥体内。

我发现了另一个非常相似的问题Screen Projection and Culling united但这并不能解决我的问题。

最佳答案

使用查询并获取通过渲染的样本怎么样?

http://www.opengl.org/wiki/Query_Object并查看 GL_SAMPLES_PASSED,

这样您就可以测量渲染了多少片段,并对其进行比较以获得正确的 LOD 选择。

关于OpenGL:屏幕上 3D 边界框的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685009/

相关文章:

vb.net - OpenGL 中的天空盒接缝

java - 在带有 Java 的 Matlab 中使用 OpenGL?

windows - Vista/7 的 OpenGL 最多 32 个屏幕窗口

c++ - 是否可以仅使用 OpenGL 确定默认帧缓冲区的大小?

c++ - 我怎样才能让我的相机朝我面对的方向移动

c++ - 如何从 OpenGL 程序中删除未使用的资源

objective-c - OpenGL透明纹理(混合)

c - 死亡时慢慢变黑

c++ - Mesa 17.0.1 显示 OpenGL Core 4.5,即使我的 Intel HD 520 显卡仅支持 4.4

c++ - 带顶点数组的 OpenGL 光照