Стерео рендеринг шара с картоном

java android opengl-es google-cardboard 360-degrees

162 просмотра

1 ответ

131 Репутация автора

Я делаю 360 медиа-плеер с Cardboard SDK в Android (на самом деле я использую новый GoogleVR SDK, но он работает почти так же). Для этого я следую этому коду:

Все прекрасно работает с монокулярным зрением и со стерео, когда не искажено (картонное представление.setDistortionCorrectionEnabled (false)). Но когда я пытаюсь использовать коррекцию искажений, это выглядит так:

введите описание изображения здесь

Я нашел это в GVR API:

Если коррекция искажения включена, контекст GL будет настроен так, чтобы он рисовался в буфере кадров, поддерживаемом текстурой во время этого вызова, поэтому, если разработчику необходимо изменить буфер буфера для некоторой стадии рендеринга, тогда разработчик должен сбросить буфер кадра в тот полученный через glGetIntegerv (GL_FRAMEBUFFER_BINDING, ...) впоследствии.

Но я не уверен, связано ли это.

Это мой код onDrawEye:

 /**
 * Draws a frame for an eye.
 *
 * @param eye The eye to render. Includes all required transformations.
 */
@Override
public void onDrawEye(Eye eye) {


    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
    Matrix.multiplyMM(mView, 0, eye.getEyeView(), 0, mCamera, 0);
    Matrix.multiplyMM(mViewProjectionMatrix, 0, mProjectionMatrix, 0, mView, 0);

    mSphere.draw(mViewProjectionMatrix);

    checkGLError("onDrawEye");

}

Есть идеи как решить это? Спасибо

(Кстати, если я рисую куб вместо сферы, все работает хорошо)

Автор: Varu Источник Размещён: 18.07.2016 09:03

Ответы (1)


0 плюса

131 Репутация автора

Хорошо, почти через 2 месяца я наконец решил свою проблему. Если кто-то хочет знать как, это была не проблема gvr, а то, как я инициализировал свою сцену. По сути, я переместил каждую работу в конструкторе Sphere в метод draw, но инициализация шейдеров.

Автор: Varu Размещён: 06.09.2016 12:47
Вопросы из категории :
32x32