admin管理员组文章数量:1658590
- OpenGL顶点规范和绘图命令 Vertex Specification and Drawing Commands
- 图元类型 Primitive Types
- 当前顶点属性值 Current Vertex Attribute Values
- 顶点数组 Vertex Arrays
- 通用顶点属性的数组 Specifying Arrays for Generic Vertex Attributes
- 顶点属性除数 Vertex Attribute Divisors
- 使用顶点数组绘制命令 Drawing Commands Using Vertex Arrays
- 条件渲染 Conditional Rendering
条件渲染可用于根据遮挡查询的结果丢弃渲染命令。条件渲染使用以下命令启动和停止:
void BeginConditionalRender(uint id, enum mode);
void EndConditionalRender();
其中,id
指定一个遮挡查询对象的名称,其结果用于确定是否丢弃渲染命令。如果查询的结果(SAMPLES_PASSED
)为零,或者查询的结果(ANY_SAMPLES_PASSED
、ANY_SAMPLES_PASSED_CONSERVATIVE
、TRANSFORM_FEEDBACK_OVERFLOW
或 TRANSFORM_FEEDBACK_STREAM_OVERFLOW
)为 FALSE
,则在 BeginConditionalRender
和相应的 EndConditionalRender
之间发出的所有渲染命令(如第 2.4 节所述)都将被丢弃且不产生任何效果。设置当前顶点状态的命令(如 VertexAttrib
等)的效果是未定义的。如果查询的结果(SAMPLES_PASSED
)为非零,或者查询的结果(ANY_SAMPLES_PASSED
、ANY_SAMPLES_PASSED_CONSERVATIVE
、TRANSFORM_FEEDBACK_OVERFLOW
、TRANSFORM_FEEDBACK_STREAM_OVERFLOW
)为 TRUE
,则这些命令不会被丢弃。
mode
参数指定了 BeginConditionalRender
如何解释由 id
给出的遮挡查询的结果:
- 如果
mode
是QUERY_WAIT
,则 GL 等待查询结果可用,然后使用结果来确定是否丢弃后续的渲染命令。 - 如果
mode
是QUERY_NO_WAIT
,则 GL 可能选择无条件地执行后续的渲染命令,而不必等待查询完成。 - 如果
mode
是QUERY_BY_REGION_WAIT
,则 GL 也会等待遮挡查询结果,并在遮挡查询的结果为零时丢弃渲染命令。如果查询结果为非零,则执行后续的渲染命令,但 GL 可能会丢弃任何未对指定遮挡查询的样本计数贡献的帧缓冲区区域的命令结果。任何这样的丢弃都是以实现相关的方式进行的,但不能丢弃对贡献到遮挡查询样本计数的任何样本的渲染命令结果。 - 如果
mode
是QUERY_BY_REGION_NO_WAIT
,则 GL 的行为类似于QUERY_BY_REGION_WAIT
,但可能选择无条件地执行后续的渲染命令,而不必等待查询完成。 - 如果
mode
是QUERY_WAIT_INVERTED
、QUERY_NO_WAIT_INVERTED
、QUERY_BY_REGION_WAIT_INVERTED
或QUERY_BY_REGION_NO_WAIT_INVERTED
,则用于确定是否渲染后续绘图命令的条件与QUERY_WAIT
、QUERY_NO_WAIT
、QUERY_BY_REGION_WAIT
或QUERY_BY_REGION_NO_WAIT
相比被取反。 - 如果
mode
是QUERY_NO_WAIT_INVERTED
或QUERY_BY_REGION_NO_WAIT_INVERTED
,则 GL 可能选择无条件地执行后续的渲染命令,而不必等待查询完成。
以下是一个简单的条件渲染示例,假设我们有一个遮挡查询对象 queryID
:
// 开始条件渲染
glBeginConditionalRender(queryID, GL_QUERY_WAIT);
// 渲染需要进行条件判断的对象
glDrawArrays(GL_TRIANGLES, 0, 6);
// 结束条件渲染
glEndConditionalRender();
在这个示例中,我们使用遮挡查询对象 queryID
来确定是否应该渲染三角形。如果遮挡查询对象的结果允许渲染,那么在 glDrawArrays
中指定的三角形将被渲染;否则,渲染命令将被忽略,不会对画布产生影响。
需要注意的是,遮挡查询对象的结果可以是零或非零,根据查询的类型和配置。在实际应用中,需要根据场景需求和性能优化目标来选择合适的条件渲染策略。
本文标签: 顶点命令条件OpenGLConditional
版权声明:本文标题:OpenGL顶点规范和绘图命令:条件渲染 Conditional Rendering 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729813122a1213568.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论