DirectX每个控件的多个设备和对象

时间:2017-12-20 08:03:31

标签: c# directx sharpdx

所以我想要渲染场景的多个控件。 我为每个控件都有一个Device实例,还有一些其他对象,比如我需要为每个控件编译着色器等等。

我想知道这是一个很好的方法来拥有多个设备和每个控件的所有对象吗?

虽然我的表现相当不错。我想节省内存和设置时间。因为例如着色器对于每个实例都是相同的,并且每次都需要加载和编译。我不能静态地使用它们,因为我尝试时它们仅限于同一设备。我试图使设备静态,所以我也可以使着色器对象静态,但我似乎在上下文被破坏的问题中运行,即使只有一个线程执行它们。也许是因为我无法依赖GUI线程总是完成上下文(所有控件静态使用)状态并在进入下一个之前渲染,这会破坏我的状态。

所以我的问题和关注更多的是它所需的内存和加载时间(感觉非常慢和重),而不是绘图的性能(非常好和令人满意)。我读到没有"最佳实践"总的来说,也许你们中的一些人有一些我可以改进的提示。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

不是为每个控件创建不同的设备,我认为最好为每个控件创建一个不同的交换链,并为同一设备共享/创建所有控件/交换链。