Unity OpenGL Texture не доступен в сборке - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь передать текстуру рендеринга из 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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...