2011-01-24 5 views
6

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

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

+1

Одна хорошая идея - вставить код. Во-первых, активируете ли вы блок текстуры? –

ответ

2

В accepted answer given here решает эту проблему в несколько большей глубине, чем я буду, но в то время как этот черный вопрос экран не возникает с 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

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

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

+1

Нельзя использовать GL_CLAMP_TO_EDGE, чтобы избежать этой проблемы? –

Смежные вопросы