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

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

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

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

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

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

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

1 ответ

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

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

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

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

Другие вопросы по тегам