Режим повтора текстур не работает - PullRequest
2 голосов
/ 22 сентября 2011

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

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

1 Ответ

3 голосов
/ 23 сентября 2011

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

...