Как работает перекраска текстуры травы?

Здравствуйте, товарищи!
Как известно, текстура травы на самом деле серая. Она динамически перекрашивается игрой в зависимости от текущего биома.
Хочу повторить этот эффект в своём проекте. Создал мир из 256х16х256 кубиков.
Заполняю массив вертексов координатами позиций и нужными цветами. То есть, массив выглядит так: [u,v,x,y,z,r,g,b].
Теперь, если я правильно понял, в функцию glInterleavedArrays() надо передать параметр GL_T2F_V3F_C3F, но такого GLenum'а не существует. Существует только GL_T2F_C4F_N3F_V3F. Получается, что в массиве надо хранить еще один байт альфа-канала и три байта нормали. Я так и сделал, но FPS падает в 3 раза в отличии от GL_T3F_V3F. А другого способа перекраски текстуры я не нашел. Вероятно, что можно как-то через шейдеры. Я пробовал через OpenGL 3.x и там это прекрасно работает. Никаких тормозов. Но, насколько мне известно, в старых версиях Minecraft'а шейдеры и нормали не использовались, а перекраска травы уже была.
Никто не раскроет тайну, как же это работает?
 
Назад
Сверху