遮挡查询
2017-12-04 10:07
295 查看
遮挡查询步骤
1.为每个遮挡查询对象生成一个ID。glGenQueries(GLsizei n, GLuint * ids);
glIsQueries(id);
2.glBeginQuery() ,开始遮挡查询。
3.渲染几何体,完成遮挡查询测试。
4.glEndQuery();
完成查询。
5.获取本次通过深度测试的样本数量。
**
为了提高性能,需要尽可能禁止所有的渲染模式,以免造成渲染时间的增加。
补充资料:
During conditional rendering, all vertex array commands, as well as glClear and glClearBuffer have no effect if the (GL_SAMPLES_PASSED) result of the query object id is zero, or if the (GL_ANY_SAMPLES_PASSED) result is GL_FALSE.
1.为每个遮挡查询对象生成一个ID。glGenQueries(GLsizei n, GLuint * ids);
glIsQueries(id);
2.glBeginQuery() ,开始遮挡查询。
3.渲染几何体,完成遮挡查询测试。
4.glEndQuery();
完成查询。
5.获取本次通过深度测试的样本数量。
**
GLuint Query; glGenQueries(1, &Query); /* glBeginQuery(target, id); gl_samples_passed gl_any_samples_passed gl_any_samples_passed_conservative */ glBeginQuery(GL_SAMPLES_PASSED, Query); glDrawArrays(GL_TRIANGLES,0,3); glEndQuery(GL_SAMPLES_PASSED); int methord = 0; if(methord == 0) { int count = 1000; while(!queryReady && count --) { glGetQueryObjectiv(Query,GL_QUERY_RESULT_AVAILABLE,&queryReady ); } if(queryReady) { glGetQueryObjectiv(Query, GL_QUERY_RESULT,&samples); }else { samples = 1; } if(samples>0) { glDrawArrays(GL_TRIANGLES_FAN, 0, Numvertices); } }else { /* 遮挡查询的问题是,需要暂时停止所有几何体和片元的处理,先计算深度缓存中受影响的样本数目,然后将返回值返还给应用程序。通过条件渲染的方式来判断遮挡查询是否得到了有效的片元结果,然后继续后面的渲染命令。 */ glBeginConditionalRender(Query, GL_QUERY_WAIT); /* GL_QUERY_WAIT / NO_WAIT /BY_REGION_WAIT /BY_REGION_NOWAIT */ glDrawArrys(GL_TRIANGLE_FAN, 0, numvertices); glEndConditionalRender(); } glDeleteQueries(1,Query);
为了提高性能,需要尽可能禁止所有的渲染模式,以免造成渲染时间的增加。
补充资料:
During conditional rendering, all vertex array commands, as well as glClear and glClearBuffer have no effect if the (GL_SAMPLES_PASSED) result of the query object id is zero, or if the (GL_ANY_SAMPLES_PASSED) result is GL_FALSE.
相关文章推荐
- [转]硬件遮挡查询(Hardware Occlusion Queries)
- OpenGL遮挡查询
- 遮挡查询 OpenGL超级宝典 第十七章
- osg入门系列6- 遮挡查询节点
- OpenGL超级宝典笔记——遮挡查询 [转]
- OpenGL超级宝典笔记——遮挡查询
- easyui datagrid 查询只有一条数据时,被滚动条遮挡住 ie兼容
- D3D10/11中的遮挡查询的使用
- GPU遮挡查询入门介绍
- 《高效学习OpenGL》 之 深度测试 遮挡查询 glDepthFunc(), glGenQueries(), glBeginQuery(), glGetQueryObjectiv()
- Jive笔记8--查询的Bug
- (非常小的技巧)利用范型List存储数据并通过Contains查询字符串是否包含在范型中
- impala查询不到hive里创建的表
- MyBatis—实现关联表查询
- oracle查询往前推3个月的数据
- 数据库查询总结
- AngularJS+用户查询+添加用户+修改密码
- MyBatis 多表联合查询及优化
- sql语句查询经纬度范围 Oracle
- 住房公积金查询