0

何が悪いのかわかりません。すべてがうまくいっているようです。コードは次のとおりです(テクスチャがロードされ、描画のみ):

glBegin( GL_QUADS );
    float TX1,TX2,TY1,TY2;

    TX1=some_numbers_check_below_code;
    TX2=some_numbers_check_below_code;
    TY1=some_numbers_check_below_code;
    TY2=some_numbers_check_below_code;

    glTexCoord2f(TX1,TY2);
    glVertex3f( float(RectOutput.x), float(RectOutput.y), 0.0f );

    glTexCoord2f(TX2,TY2);
    glVertex3f( float(RectOutput.x+InputWidth), float(RectOutput.y), 0.0f );

    glTexCoord2i(TX2,TY1);
    glVertex3f( float(RectOutput.x+InputWidth), float(RectOutput.y+InputHeight), 0.0f );(InputY)/float(Input.H)) );

    glTexCoord2f(TX1,TY1);
    glVertex3f( float(RectOutput.x), float(RectOutput.y+InputHeight), 0.0f );

glEnd();

それは大丈夫です:

TX1=0.0;
TX2=1.0;
TY1=1.0;
TY2=0.0;

(良い: http://i.imgur.com/xLeBm.png )

しかし、(例)で壊れます:

TX1=0.0;
TX2=0.5;
TY1=1.0;
TY2=0.5;

(このように: http://i.imgur.com/UykBh.png )

本当に、それは私を悩ませます。おそらく問題はこのコードにはありません。すべてうまくいくはずですが、そうではありません。

何か案は?

4

2 に答える 2

3

「何が悪いのかわからない。すべてがうまくいっているようだ」. それなら、答える必要はありません。

最初に、2 番目のケースで何が期待されるかを説明する必要があります。私は OpenGL の専門家ではありませんが、2 番目の座標セットが壊れているようです。

最初のもの: 0,0 -> 1,0 -> 1,1 -> 0,1:

  0     1
0 x---->x
  |     |
  |     |
  |     v
1 x<----x

二つ目: 0,.5 -> .5,.5 -> .5,1 -> 0,1:

  0     1
0 +-----+
  |     |
  x->x  |
  |  v  |
1 +--x->x

テクスチャをスケーリングしたい場合 (ただし、結果となるはずのものを書いていないのでわかりません)、これは明らかに間違っています。

于 2012-09-25T15:10:15.047 に答える
2

ああ…私はばかだと思います。時間がかかってすみません。エラーは次のとおりです。

glTexCoord2i(TX2,TY1);

glTexCoord2 f not iを使用する必要があります...変更するのを忘れただけです...

于 2012-09-25T16:06:44.053 に答える