Проблема с отрисовкой при проверке глубины на устройствах HTC

У меня проблема, из-за которой мой opengl не отображается должным образом на устройствах HTC.

Я протестировал его на нескольких других устройствах, на которых он отображается правильно. пример на обычном устройстве: вот пример на обычном устройстве. И вот пример с HTC Desire и Desire S.

Проблема, когда я добавил в

GLES20.glEnable(GLES20.GL_DEPTH_TEST);

и снова появляется, когда я его комментирую, но я не могу просто пропустить его, так как тогда половина моих стен становится невидимой.

Возможно ли, что это как-то связано с этим? Могу ли я что-нибудь сделать? Я могу предоставить больше кода.


person Adude11    schedule 24.10.2013    source источник


Ответы (1)


Скорее всего, вы забыли явно указать некоторые вещи. Значения по умолчанию различаются для разных устройств, и код, который работает на одном графическом процессоре, не будет работать на другом. Пожалуйста, убедитесь, что вы установили все это:

GLES20.glEnable(GLES20.GL_DEPTH_TEST); // enable depth test
GLES20.glDepthMask(true); // write to z-buffer
GLES20.glDepthFunc(GLES20.GL_LEQUAL); // specify the way depth test works

При рисовании геометрии всегда очищайте буферы цвета и глубины:

GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); // clear both color and z-buffer

И, наконец, убедитесь, что вы правильно инициализировали контекст OpenGL и у вас есть буфер глубины для используемой конфигурации EGL (EGL_DEPTH_SIZE не равен 0). Вы можете найти список всех доступных конфигураций EGL для Desire S здесь: http://gfxbench.com/device.jsp?benchmark=gfx27&D=HTC+Desire+S&testgroup=egl

person keaukraine    schedule 25.10.2013
comment
Великолепное спасибо, я предполагал, что вам нужно только включить тест глубины, и он будет одинаковым на всех устройствах. Довольно глупо с моей стороны. - person Adude11; 25.10.2013