Я работаю над проектом с использованием ARcore.
Мне нужен экран реального мира, который виден на камере ARcore, ранее использовался метод стирания пользовательского интерфейса и захвата.
Но это было так медленно, что я нашел Frame.CameraImage.Texture в Arcore API
Он работал нормально в среде редактора Unity.
Но если вы построите его на своем телефоне и проверите его, текстура будет нулевой.
Texture2D snap = (Texture2D)Frame.CameraImage.Texture;
В чем причина? может проблема с процессором?
и я попытался выполнить другую функцию.
public class TestFrameCamera : MonoBehaviour
{
private Texture2D _texture;
private TextureFormat _format = TextureFormat.RGBA32;
// Use this for initialization
void Start()
{
_texture = new Texture2D(Screen.width, Screen.height, _format, false, false);
}
// Update is called once per frame
void Update()
{
using (var image = Frame.CameraImage.AcquireCameraImageBytes())
{
if (!image.IsAvailable) return;
int size = image.Width * image.Height;
byte[] yBuff = new byte[size];
System.Runtime.InteropServices.Marshal.Copy(image.Y, yBuff, 0, size);
_texture.LoadRawTextureData(yBuff);
_texture.Apply();
this.GetComponent<RawImage>().texture = _texture;
}
}
}
![enter image description here](https://i.stack.imgur.com/stV6S.png)
Но если я изменю формат текстуры, он выйдет.
private TextureFormat _format = TextureFormat.R8;
это работа, но я не хочу красного цвета изображения, я хочу RGB цвета
что мне делать?
![enter image description here](https://i.stack.imgur.com/0mYyE.png)