在 Windows Phone 8 的 Xaml/Direct3d 应用程序中,使用 DrawingSurface 和 DrawingSurfaceBackgroundGrid 之间是否存在性能差异?
3 回答
是,有一点不同。
我设法找到有用的信息:
来自http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662943(v=vs.105).aspx,在“带有 XAML 项目模板的 Direct3D”下
“如果您想创建一个仅使用托管应用程序作为本质上本机游戏的薄包装器的游戏,以利用仅托管应用程序可用的某些功能(例如动态磁贴),建议您使用此模板。此模板使用 DrawingSurfaceBackgroundGrid 控件在屏幕上显示 Direct3D 图形。与 DrawingSurface 控件不同,此控件必须放置在 XAML 树的根部,并且始终覆盖整个屏幕。与其他模板一样,用于渲染图形的 Direct3D 代码是“ _ _
并来自http://tiptoptool.com/tag/sdk/,在“DrawingSurfaceBackgroundGrid”下
“DrawingSurfaceBackgroundGrid 是一个非常特殊的元素,它必须始终是页面的根元素,并允许开发人员使用 C++ 从 Direct3D 直接渲染到背景。DrawingSurfaceBackgroundGrid,顾名思义,继承自 Grid,因此您可以使用 Grid 布局定位子元素. 子元素由平台在 Direct3D 渲染背景之上自动组合 。DrawingSurfaceBackgroundGrid 允许开发人员直接渲染,而不是像 DrawingSurface 需要的副本(通过 Direct3D 交换链),从而提高性能。 引入 DrawingSurfaceBackgroundGrid 是为了支持需要“金属”图形性能的游戏或其他应用程序,但也希望将现有 XAML 元素用于 UI,并可以访问本机应用程序模型中不可用的某些功能,例如动态磁贴或通知”
主要区别在于DrawingSurface
应该仅用于在屏幕的一部分上绘制,例如在控件中。
另一方面,DrawingSurfaceBackgroundGrid
用于全屏使用,因为该元素充当网格,即您可以在其中添加 XAML 元素并像使用顶级网格布局一样排列它们。
至于性能,我会说对于全屏使用,后一种形式的性能更高,尽管我不能说这是事实。
另一个主要区别是DrawingSurfaceBackgroundGrid
不支持方向。它总是使用肖像。