texture mapeando um trapézio com uma textura quadrada no OpenGL

Eu estou tentando renderizar um GL_QUAD (que é moldado como um trapézio) com uma textura quadrada. Eu gostaria de tentar usar o OpenGL apenas para fazer isso. No momento, a textura está ficando muito distorcida e é realmente irritant

Normalmente, eu carregaria a textura para calcular uma homografia, mas isso significa muito trabalho e uma biblioteca de programação linear adicional / função de transformação linear direta. Estou com a impressão de que o OpenGL pode simplificar esse processo para mi

Eu olhei na web e vi "Texturas corretas em perspectiva, coordenadas Q e GLSL" e "Mapeamento de textura distorcida / distorcida no OpenGL".

Todos parecem supor que você faça algum tipo de cálculo de homografia ou use algumas partes do OpenGL que desconheço ... algum conselho?

Atualizar

Eu tenho lido "Navegando em ambientes estáticos usando simplificação e transformação de espaço de imagem" [ PDF] - página 9 do apêndice A.

Parece que eles desabilitam a correção de perspectiva multiplicando a coordenada de textura (s, t, r, q) pelo vértice do componente z do espaço mundial de um model

so para uma determinada coordenada de textura (s, r, t, q) para um quad que tem a forma de um trapézio, onde os 4 componentes são:

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

Isso é tão fácil quanto glTexCoord4f (s vert.z, r vert.z, t, q * vert.z)? Ou estou perdendo algum passo? gosta de mexer com o GL_TEXTURE glMatrixMode?

Update # 2:

Isso fez o truque! Lembre-se, pessoal, esse problema está em toda a web e não houve respostas fáceis. A maioria envolveu um novo cálculo direto da textura com uma homografia entre a forma original e a forma transformada ... também conhecida como muita álgebra linear e uma dependência externa da lib BLAS.

questionAnswers(2)

yourAnswerToTheQuestion