2010-05-04 84 views
2

我在Opengl寫了一個2D遊戲。我已經設置了正交投影,所以我可以很容易地知道四分屏在屏幕上的位置。問題是,我也希望能夠將像素直接映射到紋理座標,所以我還將正交變換(使用gluOrtho2d)應用到紋理。現在我可以使用整數和glTexCoord2i直接映射像素。問題是,在Google/Google閱讀/詢問後,我發現沒有人真的知道(顯然)glTexCoord2i的行爲,但它的使用方式非常好。有些樣品的測試代碼,我寫如下:opengl中的正交投影和紋理座標

glBegin(GL_QUADS); 
    glTexCoord2i(16,0); 
    glVertex2f(X, Y); 
    glTexCoord2i(16,16); 
    glVertex2f(X, Y+32); 
    glTexCoord2i(32, 16); 
    glVertex2f(X+32, Y+32); 
    glTexCoord2i(32, 0); 
    glVertex2f(X+32, Y); 
glEnd(); 

那麼,有沒有與我在做什麼什麼問題,或者是我在做什麼正確的嗎?

回答

3

glTexCoord*i沒有什麼特別之處,它只是glTexCoord的一個變體,它爲了方便採用整數參數,這些值將通過與所有其他tex座標相同的方式進行紋理轉換。

如果你想以像素表達你的紋理座標,你的代碼看起來完全沒問題。

編輯:如果你想利用你的OpenGL代碼爲「一個新的水平」,你應該考慮刪除即時模式渲染(glBegin/glEnd),而是建立頂點緩衝區,並與glDrawArrays吸引他們,這是後更快。

+0

哦謝謝!我知道頂點緩衝區,但在代碼的這個早期階段,我只是用它來測試。 =) – stelonix 2010-05-04 10:59:14