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

“我不知道出了什么问题。一切似乎都很好”。那太好了,不用回答了!

您应该首先解释在第二种情况下您期望得到什么。我不是 OpenGL 专家,但你的第二组坐标似乎坏了。

第一个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而不是...只是忘记更改它...

于 2012-09-25T16:06:44.053 回答