Как заставить Unity обновить/перерисовать всю сценуAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Как заставить Unity обновить/перерисовать всю сцену

Сообщение Гость »

Я показываю текстуру со встроенной камеры Android и испытываю проблемы с производительностью.
Я записал задержку камеры следующим образом:

Код: Выделить всё

Directly rendering with SurfaceTexture: ~80ms
In OpenGL, which introduces OES-to-FBO drawing: ~90ms
Unity rendering at 60fps (which is way faster than the camera recording fps): 100-150ms
Неразумно, что Unity может иметь дополнительную задержку ~60 мс.
Теоретически процесс рендеринга должен быть:

Код: Выделить всё

CameraHAL -> OES texture -> TextureView
CameraHAL -> OES texture -> draw to FBO ( GLView
CameraHAL -> OES texture -> draw to FBO ( Unity renders the last texture
Подробнее: в моем родном плагине для Android я создаю FBO (или 2 FBO для реализации двойной буферизации) и рисую из OES в FBO, когда onFrameAvailable() запускается в потоке рендеринга. . В функции Unity Update() я создаю ExternalTexture(nativeFboTextureId) и устанавливаю его для шейдера.
Итак, задержка должна исходить только от этих процессов:

Код: Выделить всё

Thread switch (from camera thread to drawingHandler thread)
OES to FBO conversion
Unity drawing frequency, which should be 16.67ms
Есть ли внутренняя задержка в Unity? Перерисовывается ли Unity с использованием последней внешней текстуры?
Как заставить Unity перерисовываться после завершения собственного кадра?

Подробнее здесь: https://stackoverflow.com/questions/781 ... hole-scene
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»