Я пытался визуализировать GL_QUAD (который имеет форму трапеции) с квадратной текстурой. Я хотел бы попробовать использовать OpenGL только для этого. Сейчас текстура сильно искажается, и это действительно раздражает.
Обычно, я бы загружал текстуру, вычислял гомографию, но это требовало много работы и дополнительной библиотеки линейного программирования / функции прямого линейного преобразования. У меня сложилось впечатление, что OpenGL может упростить этот процесс для меня.
Я посмотрел в Интернете и увидел "Перспективно-корректное текстурирование, Q-координаты и GLSL" и "Перекошенное / сдвиговое наложение текстур в OpenGL" .
Похоже, все они предполагают, что вы будете выполнять какие-то гомографические вычисления или использовать некоторые части OpenGL, о которых я ничего не знаю ... любой совет?
Обновление:
Я читал «Навигация в статических средах с использованием упрощения пространства изображений и морфинга» [ PDF ] - стр. 9, приложение A.
Похоже, что они отключают коррекцию перспективы, умножая координату текстуры (s, t, r, q) на вершину компонента z мирового пространства модели.
То есть для заданной координаты текстуры (s, r, t, q) для квадрата, имеющего форму трапеции, где 4 компонента имеют вид:
(0.0f, 0.0f, 0.0f, 1.0f),
(0.0f, 1.0f, 0.0f, 1.0f),
(1.0f, 1.0f, 0.0f, 1.0f),
(1.0f, 0.0f, 0.0f, 1.0f)
Это так же просто, как и glTexCoord4f (s vert.z, r vert.z, t, q * vert.z)? Или я пропускаю какой-то шаг? как возиться с GL_TEXTURE glMatrixMode?
Обновление № 2:
Это добилось цели! Имейте это в виду, ребята, эта проблема во всем Интернете, и не было никаких простых ответов. Большинство из них связаны с непосредственным пересчетом текстуры с гомографией между исходной формой и преобразованной формой ... много линейной алгебры и внешней зависимостью BLAS lib.