1

現在、2 つの三角形と GL_TRIANGLE_STRIP を使用して描画しているテクスチャ付きの 4 つのコーナー ポリゴンがあります。右側は高くする必要があり、これは物事を台無しにします. 三角形が真ん中で交差するところに顕著な違いがあります。このようなものをクリアするにはどうすればよいですか?

ある種のアフィン変換、またはさらに三角形に分割する必要があると思いますが、よくわかりません。

スクリーンショット: http://i.imgur.com/alYdG.png

コード例:

float x = rect.origin.x;
float y = rect.origin.y;
float w = x + rect.size.width;
float h = y + rect.size.height;
V2fT2f quad[4] = {
    //x  y
    { x, y, 0, 1 },//bottom left
    { w, y-0.2, 1, 1 },//bottom right
    { x, h, 0, 0 },//top left
    { w, h+0.2, 1, 0 },//top right
};
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_VERTEX_ARRAY);
glBindTexture(GL_TEXTURE_2D,texID);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);glErrorCheck();
glVertexPointer  (2, GL_FLOAT, sizeof(V2fT2f), &quad[0].x);
glTexCoordPointer(2, GL_FLOAT, sizeof(V2fT2f), &quad[0].s);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
4

1 に答える 1

0

いずれにせよ、変換でその効果を得るには、透視投影を設定する必要があります。

それを行った後、ここに頂点があります (これらは幅と高さの長方形を形成します)。

  1. X: centerX - halfWidth、Y: y - HalfHeight、Tu: 0、Tv: 0
  2. X: centerX - halfWidth、Y: y + HalfHeight、Tu: 0、Tv: 1
  3. X: centerX + halfWidth、Y: y + HalfHeight、Tu: 1、Tv: 1
  4. X: centerX + halfWidth、Y: y - HalfHeight、Tu: 1、Tv: 0

これを glRotatef(angle, 0, 1, 0) で囲みます - Y 軸を中心に angle 度回転します

そしてそれはあなたが必要とするものをあなたに与えるはずです。

于 2012-05-21T18:37:07.630 に答える