Повтор режима переноса текстуры не работает

Я использую мобильную платформу 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.GL_REPEAT в вызове GLES20.glTexParameteri. Это кажется действительно странным. У кого-нибудь есть идеи, которыми можно поделиться?

Я ценю любую помощь. Спасибо.


person Michael Wojcik    schedule 22.09.2011    source источник


Ответы (1)


Являются ли размеры текстур степенью двойки (POT)? В противном случае существуют некоторые ограничения на режимы переноса для текстур NPOT; в этом случае поддерживается только GL_CLAMP_TO_EDGE, что вы и видите.

person Dr. Snoopy    schedule 23.09.2011
comment
Да, это было так. Я думал, что это могло быть проблемой, но, как ни странно, мой первый тест, казалось, не поддавался объяснению. Но в любом случае ты был прав! Моя искренняя благодарность вам! - person Michael Wojcik; 23.09.2011