C# 在GPU应用过滤器之前获取屏幕截图

C# 在GPU应用过滤器之前获取屏幕截图,c#,screenshot,C#,Screenshot,为了给网络视频游戏编程一个人工智能,我想得到游戏的屏幕截图。没问题,我可以使用GetWindowRect 但是,这种方法实际上保存了一个屏幕截图,没有GPU应用的过滤器。我的意思是,我想得到网页的真实颜色,而不是我在GPU处理后看到的颜色 表单识别实际上是基于颜色的,如果没有人在截图上得到相同的颜色,我就不能发布这个AI 有办法吗 -- PinkPR您需要以与在屏幕上渲染相同的方式进行渲染,但要使用位图的设备上下文。 提供主题基本概念的示例代码: ..

为了给网络视频游戏编程一个人工智能,我想得到游戏的屏幕截图。没问题,我可以使用GetWindowRect

但是,这种方法实际上保存了一个屏幕截图,没有GPU应用的过滤器。我的意思是,我想得到网页的真实颜色,而不是我在GPU处理后看到的颜色

表单识别实际上是基于颜色的,如果没有人在截图上得到相同的颜色,我就不能发布这个AI

有办法吗

--


PinkPR

您需要以与在屏幕上渲染相同的方式进行渲染,但要使用位图的设备上下文。 提供主题基本概念的示例代码:

            ..
            ..
            //Application of matrices and usual program flow 
            // 
            ..     

            //Get graphics from the bitmap previously created
            Graphics gc = Graphics.FromImage(bmp)

            //Get device context 
            IntPtr hDc = gc.GetHdc();
            int iPixelFormat = Gdi.ChoosePixelFormat(hDc, ref pfd);
            Gdi.SetPixelFormat(hDc, iPixelFormat, ref pfd);

            IntPtr hRc = Wgl.wglCreateContext(hDc);

            //Make it current 
            if (!Wgl.wglMakeCurrent(hDc, hRc))
            {
                throw new Exception("....");
            }

            //Render to hDc