5

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;

希望这里的一些人可以使用此代码,我已经对其进行了测试并且它可以工作,但是,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

4

0 回答 0