Как получить доступ к целевой текстуре для рендеринга из собственного мира в Unity (VR)?

Я хочу визуализировать VR из собственного плагина. Это возможно?

Итак, пока что у меня есть это:

void OnRenderObject()
{
    GL.IssuePluginEvent(getRenderCallback(), 1);​
}​

Это вызывает мой родной плагин и что-то рендерит, но здесь получается беспорядок. введите здесь описание изображения

Кажется, я рендерю не ту текстуру. На самом деле, как получить правильную текстуру/фреймбуфер или любой другой трюк, необходимый для рендеринга VR из нативного плагина OpenGL? Например, мне нужна информация о рендеринге камеры (левой или правой) для правильного рендеринга.

Любые подсказки? Я пытаюсь использовать как Gear VR, так и Google VR. Любой намек на любой из них приветствуется.


person Wagner Patriota    schedule 13.02.2017    source источник


Ответы (1)


Моя интерпретация заключается в том, что вместо рендеринга Unity по умолчанию из MeshRenderer вы хотите перезаписать его своими пользовательскими вызовами OpenGL.

Не зная, что вы визуализируете и каким должно быть правильное поведение, я больше ничем помочь не могу.

Я могу себе представить, что если вы настроите свои собственные состояния, такие как включение/выключение определенных тестов глубины, смешивания, они перезапишут любые состояния, которые Unity настроил для вас до вашей пользовательской функции. И если вы не восстановите эти состояния, Unity не узнает об этом и выдаст неверный результат.

В качестве примечания вы можете проверить https://github.com/Samsung/GearVRf/ Это движок Samsung с открытым исходным кодом для GearVR. Будучи похожим на Unity, но с открытым исходным кодом, вы можете сделать что-то похожее на то, что вы опубликовали, зная, что происходит внутри.

person BoHuang    schedule 13.03.2017