Буфер глубины OpenGL ES Android, не могу приступить к работе

Я не могу заставить буфер глубины работать правильно на Android OpenGL ES 2.0. Независимо от того, что я делаю, объекты всегда отображаются в указанном порядке и полностью игнорируют буфер глубины.

Из того, что я читал, установка по умолчанию должна иметь буфер глубины, но, тем не менее, я испробовал все функции, которые только мог придумать, чтобы заставить его работать :

//setup
setEGLContextClientVersion(2);
setEGLConfigChooser( true );

GLES20.glEnable( GLES20.GL_DEPTH_TEST );
GLES20.glDepthFunc( GLES20.GL_LEQUAL );
GLES20.glDepthMask( true );

//render
GLES20.glClearColor(0.8f, 0.5f, 0.8f, 1.0f);
GLES20.glClearDepthf(1.0f);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

. Я размещаю объекты на 0,5, 0,0, -0,5 по оси z -. Я могу убедиться, что это работает, поскольку, если я использую вид в перспективе, он правильно изменит размеры удаленных объектов (на более мелкие)--мой вершинный шейдер ничего не делает, кроме как применяет матрицу вида. Если я прав, я вообще не могу изменить глубину фрагментного шейдера в ES, так что это не может быть ошибкой.

Я в тупике. Я действительно понятия не имею, что еще я могу проверить. Каждый поиск, который я выполняю (в Интернете или здесь ), дает ответы, которые, кажется, не решают проблему (, хотя это указывает на то, что у людей возникла проблема по другим причинам ). В большинстве примеров в ES 2.0 на самом деле недостаточно объектов для проверки буфера глубины, поэтому я не могу быть уверенным, что код примера тоже верен.


Чтобы прокомментировать :Мой раздел "setup" вызывается сразу после вызова "super" внутри моего производного GLSurfaceView, перед настройкой рендерера. Часть «рендеринг» вызывается первой внутри моих рендеров «onDrawFrame».

5
задан edA-qa mort-ora-y 8 August 2012 в 14:51
поделиться