OpenGL ES черная текстура на Nexus S - PullRequest
6 голосов
/ 24 января 2011

Код OpenGL, который работает на Nexus One, не будет работать должным образом на Nexus S. Текстуры, кажется, не рендерится, и у меня остается только черный цвет там, где должны быть текстуры.

У кого-нибудь есть идеи

Ответы [ 2 ]

2 голосов
/ 07 ноября 2012

Принятый здесь принятый ответ решает эту проблему немного глубже, чем я, но хотя проблема с черным экраном действительно возникает из-за строгости Nexus S (и некоторых других устройств) в отношении мощности две текстуры, это не значит, что текстуры должны иметь размеры, которые являются Po2 .

В коде загрузки текстуры могут быть следующие строки:

        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);

и если этот код будет изменен, чтобы добавить еще две строки для фиксации, то телефон будет поддерживать текстуры nPo2, если с фиксацией все в порядке. Вот код с добавленным зажимом:

        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
        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);
0 голосов
/ 24 января 2011

Nexus S более строго относится к размеру изображений, которые используются в качестве текстур в OpenGL ES.

Текстуры должны быть размером 2 ^ n (например, 256, 512, 1024 и т. Д.)

...