Я пытаюсь передать текстуру рендеринга из Unity в плагин C ++, чтобы затем использовать CUDA для текстуры. Это прекрасно работает в DirectX в редакторе и сборке, а также в OpenGL в редакторе. Но когда я строю в OpenGL, это дает мне пустую текстуру. Я также заметил, что если я пытаюсь сохранить указанную текстуру, она также сохраняется как пустая текстура. Я вызываю свой плагин, используя GL.IssuePluginEvent (PluginFunction (), 1), и это происходит в сопрограмме после yield return new WaitForEndOfFrame (). Есть идеи как это исправить?
private IEnumerator CallPlugin()
{
while (enabled) {
yield return new WaitForEndOfFrame();
//Attempt to save image to file, only works in editor
// Texture2D tex = new Texture2D(width, height, TextureFormat.RGBA32, false);
// RenderTexture.active = _renderTexture;
// tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
// tex.Apply();
// byte[] bytes = tex.EncodeToPNG();
// System.IO.File.WriteAllBytes("takeScreenshot.png", bytes);
GL.IssuePluginEvent(GetRenderEventFunc(), 1);
}
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
if (shader != null)
{
Graphics.Blit(src, dest, material);
}
}