纹理包装模式重复不起作用

时间:2011-09-22 19:37:54

标签: java android opengl-es opengl-es-2.0

我正在使用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参数名称。这看起来很奇怪。有没有人有想法分享?

我感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:3)

纹理尺寸是2的幂(POT)吗?如果没有,NPOT纹理的包裹模式有一些限制;在这种情况下,只支持GL_CLAMP_TO_EDGE,这就是您所看到的。