2014-08-12 3 views
0

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

OpenGL решает эту проблему, определяя соответствия между вершинами в УФ-пространстве и пространстве изображения/текстуры.

  1. Является ли OpenGL просто определяющим линейное преобразование между соответствиями, чтобы определить, как интерполировать текстуру?
  2. Почему нет необходимости определять гомографию для отображения? В каких случаях определение гомографии необходимо? (Это потребует наличие четыре точечных соответствий вместо три.)

ответ

2

Чтобы ответить на ваш первый вопрос:

OpenGL присвоит текстуру с UV-координатами, где (0,0) является левым нижним углом и (1,1) - верхний правый. Тогда UV-координаты (координаты текстуры) каждой вершины будут (линейно) интерполированы по своим соответствующим треугольникам во время растеризации. Затем каждый фрагмент треугольника получает интерполированную координату текстуры, которая может использоваться для извлечения соответствующего значения из текстуры. Как интерполяция по текстуре делается, зависит от параметров, посланных при создании текстуры:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

Для увеличения и Минимизация соответственно. Параметр GL_LINEAR приведет к линейной интерполяции между текселями, и, например, GL_NEAREST дает вам ближайший сосед. Если вы используете mip-mapping, вы можете передать и другие параметры. Подробнее об этом в документации:

https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml

О втором вопросе я не слишком уверен, но я считаю, что мой ответ должен частично покрыть его по крайней мере.

 Смежные вопросы

  • Нет связанных вопросов^_^