Прежде чем OpenGL ES сможет увидеть вашу текстуру, вы должны уже загрузить ее в память, сгенерировать имена текстур (glGenTextures) и связать ее (glBindTexture). Ваши данные текстуры - это просто большой массив в памяти.
Следовательно, если вы хотите изменить один тексель, вы можете манипулировать им в памяти, а затем связать его снова. Этот подход обычно делается для процедурной генерации текстур. В сети есть много доступных ресурсов, например: http://www.blumtnwerx.com/blog/2009/06/opengl-es-texture-mapping-for-iphone-oolong-powervr/
Хотя glReadPixels доступен, очень мало ситуаций, когда вам нужно использовать его для интерактивных приложений (снимок экрана приходит на ум). Это абсолютно разрушает производительность. И все равно не вернет вам исходные текстуры, но вместо этого вернет блок кадрового буфера.
Понятия не имею, какой эффект вы ищете. Однако, если вы ориентируетесь на устройство, которое поддерживает пиксельные шейдеры, возможно, пользовательский пиксельный шейдер может делать то, что вы хотите.
Конечно, я работаю в предположении, что вы не имели в виду пиксель, как в экранных координатах.