我正在尝试为遮挡查询编写一个示例 opengl 应用程序来识别可见的三角形。但是遮挡查询总是返回零计数进行像素采样。
我按照以下步骤进行操作:
设置 opengl\glut
从一个点调用lookat(从那里可以看到完整的模型)
- 启用深度测试、深度蒙版、启用面部剔除(以及其他一些选项)。
- 渲染完整的模型。
- 禁用深度蒙版
- 开始新的遮挡查询
- 渲染一个三角形\面
- 结束查询并等待结果可用。
- 一旦结果可用,然后得到计数。
- 对所有三角形 \ 面重复步骤 6 到 9。
对于给定的模型,我计算 bbox 并将其放大某个因子(比如 1.5),以便完整的模型可见。从 bbox 的每个角落,我调用步骤 2-10,并将眼点作为角落。
这里的问题是对于第 9 步的每个查询结果(遮挡的输出)查询为 0,即它说明可见像素的数量为零。
我在此处附加了示例应用程序(ObjRender Sample),它加载 OBJ 文件并执行上述步骤 1-10。要重现它,只需打开 VS 项目,构建并运行它。它有样本数据。