我正在阅读有关条件渲染的内容,我很难理解GL_QUERY_BY_REGION_WAIT和GL_QUERY_WAIT之间的区别。 是以下内容:
GL_QUERY_WAIT - 等待您的遮挡查询传递,以决定是否应继续进行条件渲染。
GL_QUERY_BY_REGION_WAIT - 等待您的遮挡查询传递到您的条件绘制所覆盖的区域,以决定是否应该继续进行条件渲染。
答案 0 :(得分:1)
主要区别在于QUERY_BY_REGION
为此添加了额外的测试。它规定,除了有条件渲染之外,任何条件渲染的 结果 的部分可能会被丢弃,如果它们出现在 覆盖的区域之外 原始查询。
OpenGL 4.4 Core Profile Specification - 10.10条件渲染 - 第339页
如果
mode
QUERY_BY_REGION_WAIT
,则GL还将等待遮挡查询结果,并在遮挡查询的结果为零时丢弃渲染命令。如果查询结果非零,则执行后续渲染命令,但是GL可以丢弃帧缓冲区中任何区域的命令结果,该区域对指定遮挡查询中的样本计数没有贡献。任何此类丢弃都是以依赖于实现的方式完成的,但是对于导致遮挡查询样本计数的任何样本,可能不会丢弃渲染命令结果。
此附加行为的详细信息是特定于实现的,但您可以将其视为专门的剪刀/模板测试。 在 条件渲染完成后,将丢弃在原始查询中未生成任何样本的部分屏幕。从理论上讲,这种测试/丢弃行为可以在 之前实现 着色,这种优化不会像规范那样被禁止。是写的。无论如何,这归结为特殊的片段测试。