在GPU应用过滤器之前获取截图

本文关键字:获取 GPU 应用 过滤器 | 更新日期: 2023-09-27 17:50:45

为了为网页电子游戏编程AI,我想获得游戏的截图。没问题,我可以用GetWindowRect。

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

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

有办法吗?

,

PinkPR

在GPU应用过滤器之前获取截图

您需要以与在屏幕上呈现相同的方式呈现,但要在位图的设备上下文中呈现。提供基本想法的示例代码主题:

            ..
            ..
            //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