Как установить / получить пиксель на текстуру в OpenGL ES на iPhone? - PullRequest
4 голосов
/ 21 февраля 2010

Я пытаюсь в Google найти то, что упомянул в заголовке, но почему-то я не смог его найти. Это не должно быть так сложно, не так ли?

То, что я ищу, - это способ получить доступ к текстуре OpenGL ES на iPhone и способ получить / установить пиксель с ее помощью. Какие функции OpenGL ES я ищу?

Ответы [ 2 ]

6 голосов
/ 17 мая 2010

Прежде чем OpenGL ES сможет увидеть вашу текстуру, вы должны уже загрузить ее в память, сгенерировать имена текстур (glGenTextures) и связать ее (glBindTexture). Ваши данные текстуры - это просто большой массив в памяти.

Следовательно, если вы хотите изменить один тексель, вы можете манипулировать им в памяти, а затем связать его снова. Этот подход обычно делается для процедурной генерации текстур. В сети есть много доступных ресурсов, например: http://www.blumtnwerx.com/blog/2009/06/opengl-es-texture-mapping-for-iphone-oolong-powervr/

Хотя glReadPixels доступен, очень мало ситуаций, когда вам нужно использовать его для интерактивных приложений (снимок экрана приходит на ум). Это абсолютно разрушает производительность. И все равно не вернет вам исходные текстуры, но вместо этого вернет блок кадрового буфера.

Понятия не имею, какой эффект вы ищете. Однако, если вы ориентируетесь на устройство, которое поддерживает пиксельные шейдеры, возможно, пользовательский пиксельный шейдер может делать то, что вы хотите.

Конечно, я работаю в предположении, что вы не имели в виду пиксель, как в экранных координатах.

4 голосов
/ 22 февраля 2010

Я не знаю о настройке отдельного пикселя, но glReadPixels может считывать блок пикселей из буфера кадров (http://www.khronos.org/opengles/sdk/docs/man/glReadPixels.xml). Ваша проблема с поиском в Google может быть из-за того, что пиксели текстуры часто сокращаются до «текселей».

...