нормали
Если вы glEnable( GL_NORMALIZE )
, то вы можете представить нормали как GL_BYTE
(или короткое). Норма, представленная в байтах 0xFF 0xCC 0x33
, нормализуется графическим процессором до (0,77, 0,62, 0,15).
Обратите внимание, что с GL_NORMALIZE
наблюдается небольшое снижение производительности, поскольку графический процессор должен нормализовать каждый нормальный показатель.
Еще одна оговорка, связанная с GL_NORMALIZE
, заключается в том, что вы не можете делать хитрость с помощью ненормализованных нормалей.
Редактировать: Под «хитростью» я подразумеваю настройку длины нормали в исходных данных (до значения, отличного от 1,0), чтобы сделать вертолет ярче или темнее.
Координаты текстуры
Насколько я могу судить, целые числа (байты или шорты) менее полезны для текстурных координат. Нет простого вызова, инструктирующего OpenGL «нормализовать» ваши текстурные координаты. 0 означает 0,0, 1 означает 1,0, а 255 означает 255,0 (для листов). Нет возможности указать дробные значения между ними.
Однако не забывайте о матрице текстур. Возможно, вы сможете использовать его для преобразования целых чисел в полезные текстурные координаты. (Я не пробовал.)