texture mapeando un trapecio con una textura cuadrada en OpenGL

He estado tratando de renderizar un GL_QUAD (que tiene la forma de un trapecio) con una textura cuadrada. Me gustaría probar y usar OpenGL solo para lograr esto. En este momento, la textura se distorsiona mucho y es realmente molesto.

Normalmente, cargaría la textura para calcular una homografía, pero eso significa mucho trabajo y una biblioteca de programación lineal adicional / función de transformación lineal directa. Tengo la impresión de que OpenGL puede simplificar este proceso para mí.

He buscado en la web y he visto "Texturizado con perspectiva correcta, coordenadas Q y GLSL" y "Asignación de textura sesgada / cortada en OpenGL".

Todo esto parece suponer que harás algún tipo de cálculo de homografía o usarás algunas partes de OpenGL que desconozco ... ¿algún consejo?

Actualizar

He estado leyendo "Navegación en entornos estáticos mediante la simplificación y la transformación del espacio de imágenes" [ PDF] - página 9 apéndice A.

arece que deshabilitan la corrección de perspectiva al multiplicar la coordenada de textura (s, t, r, q) con el vértice del componente z del espacio mundial de un modelo.

so para una coordenada de textura dada (s, r, t, q) para un quad que tiene forma de trapecio, donde los 4 componentes son:

(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) 

Esto es tan fácil como glTexCoord4f (s vert.z, r vert.z, t, q * vert.z)? ¿O me estoy perdiendo algún paso? como jugar con el GL_TEXTURE glMatrixMode?

Actualización # 2:

Eso hizo el truco! Tenga en cuenta amigos, este problema está en toda la web y no hubo respuestas fáciles. La mayoría involucraba recalcular directamente la textura con una homografía entre la forma original y la forma transformada ... es decir, mucho álgebra lineal y una dependencia externa de lib BLAS.

Respuestas a la pregunta(2)

Su respuesta a la pregunta