1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 原创 【我的OpenGL学习进阶之旅】介绍一下OpenGL ES的 遮挡查询

原创 【我的OpenGL学习进阶之旅】介绍一下OpenGL ES的 遮挡查询

时间:2022-12-27 10:21:31

相关推荐

原创 【我的OpenGL学习进阶之旅】介绍一下OpenGL ES的 遮挡查询

目录

一、遮挡查询1.1 开始和结束遮挡查询1.2 创建和删除id1.3 检索查询对象的结果1.4 遮挡查询的步骤1.5 例子1.6 扩展阅读

一、遮挡查询

在一个场景中,如果有有些物体被其他物体遮住了不可见。那么我们就不需要绘制它。在复杂的场景中,这可以减少大量的顶点和像素的处理,大幅度的提高帧率。遮挡查询就是允许我们判断一组图形在进行了深度测试之后是否可见。

遮挡查询可用于查询对象来跟踪通过深度测试的任何片段或者样本。

这种方法可用于不同的技术,例如镜头炫光特效的可见性测试以及避免在包围体被遮挡的不可见对象上进行几何形状处理的优化。

1.1 开始和结束遮挡查询

遮挡查询可以分别在GL_ANY_SAMPLES_PASSEDGL_ANY_SAMPLES_PASSED_CONSERVATIVE目标上用glBeginQueryglEndQuery开始和结束。

void glBeginQuery (GLenum target, GLuint id);void glEndQuery (GLenum target);

参数说明:

target

指定查询对象的目标类型。有效值是:GL_ANY_SAMPLES_PASSEDGL_ANY_SAMPLES_PASSED_CONSERVATIVEGL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTENid

指定查询对象的名称(仅glBeginQuery) 使用GL_ANY_SAMPLES_PASSED目标将返回表示是否有样本通过深度测试的精度布尔状态。使用GL_ANY_SAMPLES_PASSED_CONSERVATIVE目标将提供更好的性能,但是答案的精确度较低。使用GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,有些实现将在没有样本通过深度测试时返回GL_TRUE

1.2 创建和删除id

idglGenQueries创建,用glDeleteQueries删除

void glGenQueries (GLsizei n, GLuint *ids);

参数说明:

n

指定生成的查询名称对象的数量ids

指定一个数组,以存储查询名称对象的列表

void glDeleteQueries (GLsizei n, const GLuint *ids);

参数说明:

n

指定要删除的查询名称对象的数量ids

指定一个需要删除的查询名称对象的数组

1.3 检索查询对象的结果

在用glBeginQueryglEndQuery指定查询对象边界之后,可以使用glGetQueryObjectuiv检索查询对象的结果。

void glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);

参数说明:

id

指定查询对象名称pname

指定需要检索的查询对象参数,可以为GL_QUERY_RESULTGL_QUERY_RESULT_AVAILABLEparams

指定存储返回参数值的对应类型的数组

为了获得更好的性能,你应该等待几帧再执行glGetQueryObjectuiv调用,以等待GPU中的结果可用。

1.4 遮挡查询的步骤

遮挡查询的步骤:

首先为这些物体生成查询对象ID 调用glGenQueries调用glBeginQuery开始遮挡查询渲染包围体调用glEndQuery结束遮挡查询调用glGetQueryObject[u]iv,根据ID提取遮挡查询的结果,并根据结果进行相应的操作glDeleteQueries删除ID,回收资源

1.5 例子

下面的例子说明如何设置一个遮挡查询对象和查询结果:

glBeginQuery( GL_ANY_SAMPLES_PASSED, queryObject );// draw primitives here// ...glEndQuery( GL_ANY_SAMPLES_PASSED );// ...// after several frames have elapsed, query the number of// samples that passed the depth test glGetQueryObjectuiv( queryObject, GL_QUERY_RESULT );

1.6 扩展阅读

OpenGL超级宝典笔记——遮挡查询 /mazhenyu/p/5083026.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。