Точка тестирования в альфа-канале - PullRequest
0 голосов
/ 08 ноября 2010

Есть ли способ обнаружить, что альфа пикселя после рисования не равна 0 при использовании OpenGLES на iphone?

Я хотел бы проверить несколько точек, чтобы увидеть, находятся ли они внутри области случайного многоугольника, нарисованного пользователем. Если вы знаете Flash, то мне нужно что-то эквивалентное BitmapData :: getPixel32.

1 Ответ

1 голос
/ 11 ноября 2010

Кадровый буфер поддерживается графическим процессором и не сразу доступен для процессора.Я думаю, что вы, скорее всего, захотите от полного OpenGL - это запрос окклюзии;Вы можете запросить прорисовку геометрии и узнать, сколько пикселей было на самом деле нанесено.К сожалению, это не доступно на iPhone.

Я думаю, что вы, вероятно, хотите, чтобы glReadPixels, который может быть использован для чтения одного пикселя, если вы предпочитаете, например (написано здесь, как я печатаю, не проверено)

GLubyte pixelValue[4];
glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelValue);

NSLog(@"alpha was %d", pixelValue[3]);

Использование glReadPixels вызывает сброс конвейера, поэтому, как правило, это плохая идея с точки зрения производительности GL, но она будет делать то, что вы хотите.В отличие от iOS, OpenGL использует порядок миллиметровки для координат пикселей, поэтому (0, 0) - левый нижний угол.

...