iPhone iOS5 запрашивает объекты конвейера OpenGL ES 2.0, скрыты ли они в виде или нет ... "Окклюзия" - PullRequest
5 голосов
/ 22 декабря 2011

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

...