Opengl es iPhone iOS5查询OpenGL ES 2.0管道对象是否隐藏在视图中……”;闭塞;

Opengl es iPhone iOS5查询OpenGL ES 2.0管道对象是否隐藏在视图中……”;闭塞;,opengl-es,ios5,collision-detection,shader,occlusion,Opengl Es,Ios5,Collision Detection,Shader,Occlusion,EXT_occlusion_query_boolean是OS5.0的新功能 在我看来,整个互联网上似乎没有一个人发布过关于这些新扩展的信息,也没有使用过这些代码 所以在这里,它们被正确地设置了…据我所知,任何地方都没有记录。。。您可以从下面这个小sudo代码想象它们将如何进入您的代码: import UIKit/UIKit.h import GLKit/GLKit.h import "GLProgram.h" GLuint testBox,hasBeenTested,theParams;

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中似乎存在一个bug,如果使用self.effect2=[[glkbaseffect alloc]init];用于呈现对象的GLKit代码类型,而不是普通的GLES2.0管道,查询将无法给出正确答案。。。(从不隐藏)虽然我测试了一个隐藏GLKBaseEffect对象的管道对象(失败),因此可能是混合了这两种类型的错误,如果你换一种方式,让GLKBaseEffect对象隐藏管道对象,它给出了正确的答案,我还没有进一步测试

所以问题是,我打赌我可以更进一步,以某种方式在顶点/片段着色器中创建碰撞检测。。。我找到的这段代码看起来像是一个开始。。。有了这两段sudo代码,有人能让我更接近碰撞检测吗?当一个“部件”完全进入另一个部件时,碰撞检测就会触发?一个更快更简单的第一步可能是在一个积极的触发之前将整个对象隐藏在另一个对象中,这将是一个很好的开始,有什么想法吗