GL_SHORT как текстурные координаты - PullRequest
0 голосов
/ 14 января 2012

Инструменты побуждают меня использовать GL_SHORT для текстурных координат. Я делаю это для четырехугольников, где мне нужны только значения 0 и 1.

Могу ли я использовать GL_SHORT для других случаев, когда мне нужны значения от 0 до 1, если точность короткого замыкания достаточна? Если так, то как?

1 Ответ

5 голосов
/ 16 января 2012

Чтобы получить максимальную точность, вы можете использовать значения 0..32767 для указания координат текстуры как GL_SHORT, чтобы указать значения от 0.0f до 1.0f.Тогда вы получите точность 1/32767, которая приблизительно равна 0,00003.Вам этого достаточно?- это зависит от вас и вашего заявления.Скорее всего, вам этого будет достаточно.

Чтобы указать какое-либо значение в диапазоне от 0 до 1, либо используйте матрицу текстуры с масштабированием (если вы используете GLES1), либо просто умножьте координату текстуры на правильную форму масштабирования в своем фрагменте.шейдер (если вы находитесь на GLES2).

Вот простой пример для GLES1 - допустим, ваша текстура 100x200, и вам не нужно указывать координаты текстуры с меньшей точностью, чем 1 тексель.Затем вы можете установить масштаб текстуры матрицы для следующих факторов - 1/100 и 1/200:

glMatrixMode(GL_TEXTURE);
glPushMatrix();
glLoadIdentity();
glScalex(65536/100, 65536/200, 1);
glMatrixMode(GL_MODELVIEW);

После этого в вашем массиве / буфере вершин вы можете использовать:

  • (0, 0) для указания значения (0.0f, 0.0f)
  • (10, 40) для указания значения (10 / 100.0f, 40 / 200.0f) = (0.1f, 0.2f)
  • (100, 200) для указания значения (1.0f, 1.0f).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...