2012-09-25 61 views
0

我不知道什麼是錯的。一切似乎都很好。這裏的代碼(紋理加載,只是圖):OpenGL - 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

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

任何想法?

+1

我不知道很多關於你正在做的,我不是專家基於OpenGL,但似乎你錯過了將紋理座標發送到平面的其中一個三角形。 –

回答

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 

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

+0

感謝您的回答,但我自己修復了它。這只是愚蠢的錯誤glTexCoord2i insT glTexCoord2f;) – dj8000

2

哦......我覺得很蠢。對不起,需要時間。這是錯誤:

glTexCoord2i(TX2,TY1);

我應該使用glTexCoord2 ˚F沒有 ...剛纔忘了改變它...