2011-09-22 44 views
2

我正在使用Android移動平臺,使用OpenGL ES 2.0。紋理換行模式重複不起作用

當我做像這樣的紋理,在我的場景貼圖正確繪製

//Generate there texture pointer 
GLES20.glGenTextures(1, textureHandle, 0); 

    // parameters - we have to make sure we clamp the textures to the edges!!! 
      GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR); 

不過,我希望能夠滾動的紋理,而且我相信設置自動換行模式來GLES20.GL_REPEAT會使所需的計算更可能。但是,使用下面的代碼時。

  //Generate there texture pointer 
      GLES20.glGenTextures(1, textureHandle, 0); 

    // parameters - we have to make sure we clamp the textures to the edges!!! 
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_REPEAT); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_REPEAT); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR); 

每個紋理都是黑色的。我在這裏唯一的區別是在調用GLES20.glTexParameteri時設置GLES20.GL_REPEAT參數名稱。這看起來很奇怪。有沒有人有一些想法可以分享?

我很感激任何幫助。 謝謝。

回答

3

紋理尺寸冪的兩個(POT)?如果不是,NPOT紋理的換行模式有一些限制;這種情況下只支持GL_CLAMP_TO_EDGE,這就是你所看到的。

+0

是的,就是這樣。我曾認爲這可能是問題,但奇怪的是,我的第一次測試似乎無視了原因。但無論如何,你是對的!我衷心感謝你! –