2013-01-24 22 views
6

我想紋理應用到頂點數組白衣下面的代碼:OpenGL的紋理總是具有相同的大小

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, texture); 
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
glColor3f(1.0f, 1.0f, 1.0f); 

glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_VERTEX_ARRAY); 
glTexCoordPointer(2, GL_FLOAT, 0, texcoords); 
glVertexPointer(3, GL_FLOAT, 0, vertices); 
glDrawElements(GL_QUADS, 12, GL_UNSIGNED_BYTE, faceIndices); 
glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_COLOR_ARRAY); 

glDisable(GL_TEXTURE_2D); 

這種質地: texture

,所以我有這樣的結果: Result

現在我想知道如何縮放地板紋理,我已經嘗試用photoshop縮放紋理,但結果是相同但較重。

回答

2

它取決於你的紋理座標你想如何映射紋理。 讓採取例如,它覆蓋整個多邊形

glTexCoord2f(0.0f, 0.0f); 
glTexCoord2f(1.0f, 0.0f); 
glTexCoord2f(1.0f, 1.0f); 
glTexCoord2f(0.0f, 1.0f); 

現在,如果你想重複紋理五次然後提供的座標,比如`

glTexCoord2f(0.0f, 0.0f); 
glTexCoord2f(5.0f, 0.0f); 
glTexCoord2f(5.0f, 5.0f); 
glTexCoord2f(0.0f, 5.0f);` 

就像上面的例子,你要如何映射更改值紋理。

+2

謝謝你:D,這是正確的答案。 – Luca

7

我假設你的意思是你想紋理平鋪更少,或平鋪更多。在這種情況下,請更改您的紋理座標,而不是紋理(即無論數據在texcoords中)。

此外,您的示例紋理爲藍色,但在呈現的圖像中呈棕色。加載時可能會交換R + B通道。

+2

也謝謝換換頻道提示,我還沒有注意到:) – Luca

相關問題