小编hok*_*kuk的帖子

如果它们隐藏在视图中,iPhone iOS5查询OpenGL ES 2.0管道对象......"遮挡"

EXT_occlusion_query_boolean是OS5.0的新增功能,

它看起来像我在整个互联网上没有一个人发布了这些新的扩展,也没有使用这个代码....

所以在这里它们设置正确...据我所知,这里没有任何记录...你可以想象它们将如何通过这个小的sudo代码进入你的代码:

import UIKit/UIKit.h

import GLKit/GLKit.h

import "GLProgram.h"

GLuint testBox,hasBeenTested,theParams;

//...

glGenQueriesEXT(1, &testBox);

glBeginQueryEXT(GL_ANY_SAMPLES_PASSED_EXT, testBox);


//... draw an object .......

glEndQueryEXT(GL_ANY_SAMPLES_PASSED_EXT);

glGetQueryObjectuivEXT(testBox, GL_QUERY_RESULT_AVAILABLE_EXT, &hasBeenTested);

if (hasBeenTested) glGetQueryObjectuivEXT(testBox, GL_QUERY_RESULT_EXT, &theParams);

glDeleteQueriesEXT(1, &testBox);

if (!theParams)  object is hidden;  don't draw next time;
Run Code Online (Sandbox Code Playgroud)

希望这里的一些人可以使用这个代码,我已经测试了它并且它有效,但是,在GLKit中似乎存在一个错误,如果你使用self.effect2 = [[GLKBaseEffect alloc] init]; 用于呈现对象的GLKit代码类型,而不是普通的GLES2.0管道,查询将无法给出正确答案...(从不隐藏)虽然我测试了一个隐藏GLKBaseEffect对象的管道对象,(失败)所以可能只是混合这两种类型的错误,如果你走另一种方式,让GLKBaseEffect对象隐藏一个管道对象,它给出了正确的答案,我还没有进一步测试.

所以问题是,我打赌我可以更进一步,并在顶点/片段着色器中以某种方式创建碰撞检测...这个代码我发现看起来像一个开始...给这两个sudo代码,有人能得到我更接近碰撞检测,当"部分"完全进入另一部分时触发?更快更容易/第一步可能是在触发正面之前将整个对象隐藏在另一个对象中,这将是一个很好的开始,任何想法?

http://ucv.academia.edu/RhadamésCarmona/Papers/743483/Volume-Surface_Collision_Detection

http://ucv.academia.edu/RhadamésCarmona/Papers/743483/Volume-Surface_Collision_Detection

shader opengl-es occlusion collision-detection ios5

5
推荐指数
0
解决办法
1090
查看次数

标签 统计

collision-detection ×1

ios5 ×1

occlusion ×1

opengl-es ×1

shader ×1