簡體   English   中英

OpenGL - 四邊形上的紋理坐標

[英]OpenGL - Texture coordinates on quad

我不知道出了什么問題。 一切似乎都很好。 這是代碼(紋理已加載,只是繪圖):

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

真的,這讓我很煩。 可能問題不在這段代碼中。 一切都應該沒問題……但事實並非如此。

有任何想法嗎?

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

您應該首先解釋在第二種情況下您期望得到什么。 我不是 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

如果你想縮放紋理(但我不知道你沒有寫出應該是什么結果)那么這顯然是錯誤的。

哦……我覺得自己很傻。 抱歉耽誤了時間。 這是錯誤:

glTexCoord2i(TX2,TY1);

我應該使用 glTexCoord2 f而不是......只是忘了改變它......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM