ron*_*nag 6 c++ opengl directx silverlight winapi
编辑:由于我的原始问题是由于我的错误,我将重新解释这个问题.
我根据此处的代码在我的C++应用程序中的窗口中托管Silverlight .
现在我想将控件的内容复制到内存中,以便使用我自己的渲染器中的内容.我遇到的问题是,当我将"EnableGPUAcceleration"设置为true时,BitBlt会停止工作,我得到的只是黑度.
我觉得理论上应该有一种方法来复制GPU加速的Silverlight控件的内容及其alpha,例如像glReadPixels这样的东西.
任何人都知道如何使用非无窗口的gpu加速Silverlight控件的alpha复制内容?
另一个问题是窗口必须是可见的,没有其他窗口可能会重叠,否则我得不到合适的内容.我希望托管窗口不可见.
可以在这里找到工作示例代码(虽然没有我想要开始工作的实际BitBlt"ting").
我将开始研究这个,我有一个想法,OpenCL 或者也许因为您使用的是 Silverlight,DirectCompute 可能能够建立一个上下文,让您可以拥有更多的灵活性。
一种方法是简单地使用其中一种语言进行所有 GPU 加速。同时,我将尝试找出您是否可以使用其中之一来获取您需要的信息或其他一些技术。
此链接似乎验证您是否需要在所有交互式成员上启用 GPU 加速。
编辑:
我认为这篇文章可能会为您的问题提供一些其他帮助。本质上,这将是关于访问缓存并确保您正在使用缓存。任何设置为缓存模式的内容都将暂时存储在显卡上。
这篇文章也对这些问题进行了一些阐述。在谈到硬件渲染时,重要的是要注意哪些操作会导致缓存问题。
我必须承认我对 Silverlight 一点也不熟悉,但是这些类型的问题很熟悉。尽我所能来了解您的代码的情况。