0

OpenGL でテクスチャ付きの台形を描画していますが、アフィンの問題が発生します。

http://upload.wikimedia.org/wikipedia/commons/5/57/Perspective_correct_texture_mapping.jpg

パースペクティブ コレクトでテクスチャが必要です。

画像空間(sw tw w )で補間する必要があり、その方法がわかりません:

http://i.stack.imgur.com/O0AnC.png

現在のコード プロジェクトを貼り付けます。

  • c++:

ttps://gist.github.com/danicomas/a1f5a0e6849b3ac8b51c169c2c030e37 (http を追加)

  • バーテックス:

ttps://gist.github.com/danicomas/fee77cf48fc5085f61a2fcf7a2c6d5de (httpを追加)

  • 断片:

ttps://gist.github.com/danicomas/0bbd679d2d7da18bc61ee23b36096a16 (http を追加)

これどうやってするの?いくつかのサンプルコード?

4

1 に答える 1

0

ついに。私はそれが簡単な解決策であることがわかりました!

  • c++

glPushMatrix();
glBegin(GL_QUADS);

float scale_texcoord = 0.7;
float top = 0.7;

float tx = scale_texcoord * top;

glTexCoord2f(-1 / 2, -1);
glVertex2f(-1.4, -1);

glTexCoord4f(0,  0, 0, tx);
glVertex2f(-top,  1);

glTexCoord4f( tx,  0, 0, tx);
glVertex2f( top,  1);

glTexCoord2f( 1, -1);
glVertex2f( 1.4, -1);

glEnd();
glPopMatrix();

  • 断片:

uniform sampler2D sampler;

void main()
{
 vec2 interpolated = vec2(gl_TexCoord[0].x / gl_TexCoord[0].w, gl_TexCoord[0].y);

 gl_FragColor = texture2D(sampler, vec2(interpolated.x, interpolated.y));
}

于 2013-10-11T20:10:31.647 に答える