Рендеринг стереоскопического 3D в Android OpenGL ES 3.0 или 2.0 - PullRequest
0 голосов
/ 04 июля 2018

Я работаю с 3D-объектами и использую OpenGL ES для Android. Я пытаюсь реализовать два GLES20.glViewport(), чтобы я мог иметь один и тот же объект дважды, один слева и один справа. Я видел учебники по OpenGL и C ++, и это возможно. Но в Android все иначе, потому что мне нужно вызвать GLES20.glViewport() в методе onSurfaceChanged(). Может кто-то помочь мне, пожалуйста? Благодарю.

1 Ответ

0 голосов
/ 05 июля 2018

Ну, теперь я знаю, как это сделать. Если кто-то хочет реализовать это, вот мое решение.

1.- Определите ваш glViewPort () в методе onSurfaceChanged (). Это может иметь полное разрешение вашего экрана.

2.- В методе, который рисует левый объект, поместите его сверху:

GLES20.glEnable(GLES20.GL_SCISSOR_TEST);
GLES20.glScissor(0, 0, width/2, height);
GLES20.glViewport(0, 0, width/2, height);

Затем все, что нужно для рисования, и, наконец, в конце метода вы отключаете тест ножниц.

GLES20.glDisable(GLES20.GL_SCISSOR_TEST);

3.- Вы делаете то же самое для правильного объекта, но изменяете параметры функций.

GLES20.glEnable(GLES20.GL_SCISSOR_TEST);
GLES20.glScissor(width/2, 0, width/2, height);
GLES20.glViewport(width/2, 0, width/2, height);
...
GLES20.glDisable(GLES20.GL_SCISSOR_TEST);
...