How to get other app's pixel output in Unity?












1















Is it possible, using Unity 3D, to grab the pixel output of another, external app's window? So that one could say snapshot a game's pixels at a given time to analyze the color values etc. Thanks!










share|improve this question



























    1















    Is it possible, using Unity 3D, to grab the pixel output of another, external app's window? So that one could say snapshot a game's pixels at a given time to analyze the color values etc. Thanks!










    share|improve this question

























      1












      1








      1








      Is it possible, using Unity 3D, to grab the pixel output of another, external app's window? So that one could say snapshot a game's pixels at a given time to analyze the color values etc. Thanks!










      share|improve this question














      Is it possible, using Unity 3D, to grab the pixel output of another, external app's window? So that one could say snapshot a game's pixels at a given time to analyze the color values etc. Thanks!







      unity3d






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 2 at 11:44









      Philipp LenssenPhilipp Lenssen

      3,46194057




      3,46194057
























          1 Answer
          1






          active

          oldest

          votes


















          1














          It is not possible using built in Unity APIs.



          It is possible using OS specific APIs. For Windows, the Desktop Duplication API is the ideal source of pixel data for other applications. Documentation can be found https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/desktop-dup-api



          You would need to create a DLL that uses this API and exposes the needed data to your Unity app.



          An active project that makes this easier to consume within Unity is located at
          https://github.com/hecomi/uDesktopDuplication






          share|improve this answer



















          • 1





            Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

            – Philipp Lenssen
            Jan 2 at 18:39






          • 1





            @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

            – Mike dg
            Jan 2 at 20:09











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54005750%2fhow-to-get-other-apps-pixel-output-in-unity%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          It is not possible using built in Unity APIs.



          It is possible using OS specific APIs. For Windows, the Desktop Duplication API is the ideal source of pixel data for other applications. Documentation can be found https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/desktop-dup-api



          You would need to create a DLL that uses this API and exposes the needed data to your Unity app.



          An active project that makes this easier to consume within Unity is located at
          https://github.com/hecomi/uDesktopDuplication






          share|improve this answer



















          • 1





            Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

            – Philipp Lenssen
            Jan 2 at 18:39






          • 1





            @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

            – Mike dg
            Jan 2 at 20:09
















          1














          It is not possible using built in Unity APIs.



          It is possible using OS specific APIs. For Windows, the Desktop Duplication API is the ideal source of pixel data for other applications. Documentation can be found https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/desktop-dup-api



          You would need to create a DLL that uses this API and exposes the needed data to your Unity app.



          An active project that makes this easier to consume within Unity is located at
          https://github.com/hecomi/uDesktopDuplication






          share|improve this answer



















          • 1





            Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

            – Philipp Lenssen
            Jan 2 at 18:39






          • 1





            @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

            – Mike dg
            Jan 2 at 20:09














          1












          1








          1







          It is not possible using built in Unity APIs.



          It is possible using OS specific APIs. For Windows, the Desktop Duplication API is the ideal source of pixel data for other applications. Documentation can be found https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/desktop-dup-api



          You would need to create a DLL that uses this API and exposes the needed data to your Unity app.



          An active project that makes this easier to consume within Unity is located at
          https://github.com/hecomi/uDesktopDuplication






          share|improve this answer













          It is not possible using built in Unity APIs.



          It is possible using OS specific APIs. For Windows, the Desktop Duplication API is the ideal source of pixel data for other applications. Documentation can be found https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/desktop-dup-api



          You would need to create a DLL that uses this API and exposes the needed data to your Unity app.



          An active project that makes this easier to consume within Unity is located at
          https://github.com/hecomi/uDesktopDuplication







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 2 at 14:37









          Mike dgMike dg

          4,11721924




          4,11721924








          • 1





            Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

            – Philipp Lenssen
            Jan 2 at 18:39






          • 1





            @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

            – Mike dg
            Jan 2 at 20:09














          • 1





            Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

            – Philipp Lenssen
            Jan 2 at 18:39






          • 1





            @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

            – Mike dg
            Jan 2 at 20:09








          1




          1





          Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

          – Philipp Lenssen
          Jan 2 at 18:39





          Thank you very much, I will try this! Do I understand correctly that using uDesktopDuplication, one would then not have to do the Create DLL step you describe?

          – Philipp Lenssen
          Jan 2 at 18:39




          1




          1





          @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

          – Mike dg
          Jan 2 at 20:09





          @PhilippLenssen if you download the .unitypackage from the releases page, the author has gone through the trouble of building the DLL as well as providing a reasonable Unity C# interface.

          – Mike dg
          Jan 2 at 20:09




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54005750%2fhow-to-get-other-apps-pixel-output-in-unity%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith