Простая задача 2D-картирования в openGLES - PullRequest
1 голос
/ 06 мая 2011

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

У меня есть текстура 1024 x 512, и я отрисовываю 2D квад, который намеревается использовать часть этой текстуры. Квадрат имеет тот же размер, что и часть текстуры, которую я пытаюсь визуализировать, например, 100 x 100 между вершинами, чтобы отобразить часть текстуры 100 x 100. Пиксели текстуры имеют значения от 0 (s) и 104 (t), принимая нулевые координаты пикселей, и, следовательно, UV (st) вычисляется как 0/1024 и 104/512 до 100/1024 и 204/512.

Однако, когда я рендерил квад, я получаю линию от координат пикселей в 103 (t), которая является частью другого участка изображения, поэтому он действительно выделяется. Я могу обойти эту проблему, установив UV на 0/1024 и 105/512, но мне это кажется очень неправильным.

Я долго искал и не могу найти, что я делаю неправильно. Я пробовал GL_LINEAR, GL_NEAREST, зажим и т.д. в glparams безрезультатно. Может кто-нибудь, пожалуйста, направьте меня к моей ошибке?

1 Ответ

1 голос
/ 06 мая 2011

Это потому, что координаты текстуры не относятся к пикселям, поэтому ваше предположение

и, следовательно, UV (st) рассчитывается как 0/1024 и 104/512 с точностью до 100 /1024 и 204/512

не так!

Это своего рода FAQ, я недавно ответил на него в Координаты текстуры OpenGL в пиксельном пространстве

...