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