1

我正在使用 Visual Studio 2012 Express 和 Blender 为 Windows 应用商店(Metro 应用程序)开发 3D 游戏,以创建 3D 对象 (fbx)。我使用 Visual Studio 3D Starter Kit 在游戏中导入 fbx 文件。目前我只在 Windows 8 机器上测试了我的应用程序,现在我也想在 Windows RT 设备上测试它。在 Microsoft 论坛上,我读到如果我想在 Windows RT 设备上部署构建,我需要将我的应用程序限制为功能级别 9_1。

我需要知道以下两件事:

• 如何在Windows RT 机器上运行硬件显卡上的应用程序?

• 如何将应用程序限制为 DirectX Feature Level 9_1?

任何帮助将不胜感激。

4

3 回答 3

2

如何在 Windows RT 机器上的硬件显卡上运行应用程序?

各种 Windows 8 示例和模板中提供的 Direct3D 代码应始终在硬件显卡上运行。假设您首先对如何实际获取应用程序(即部署)的具体细节感兴趣,有两种主要方法可以做到这一点。第一个是远程部署和调试:在 Visual Studio 中,转到项目的属性页,然后转到“调试”视图。在“Debugger to launch”下选择“Remote Machine”并将“Machine Name”设置为目标Windows RT机器的IP地址或NetBIOS名称。远程机器需要运行远程调试工具并连接到与开发机器相同的网络。有关远程调试的更多信息,请查看此页面

第二种方法是手动创建和部署本地测试包。为此,请右键单击项目并转到 Store -> Create App Packages。当提示是否将此包提交到商店时,选择“否”并按照其余提示创建适当的应用包。将创建的包文件夹的内容复制到目标机器,然后运行“Add-*”powershell脚本。这将在目标机器上安装包。

如何将应用程序限制为 DirectX Feature Level 9_1?

最好的方法是使用 DirectX 控制面板。运行“dxcpl.exe”并单击范围菜单下的“编辑列表”。将应用的可执行文件的名称(通常是 [应用名称].exe)添加到列表中。然后,在设备设置下,将“功能级别限制”设置为 9.1 并选中“禁用功能级别升级”复选框。下次启动应用程序时,系统会自动将功能限制为 9.1 硬件上可用的功能。

请注意,Windows 应用认证工具包会自动执行功能级别测试,以确保您的应用不会在 9.1 上崩溃,但其范围相对有限。

于 2013-08-29T00:26:45.940 回答
1

除了 alanw,如果您的解决方案中有任何着色器,请在 VS 中调出每个着色器的属性页,展开“HLSL 编译器”并选择“常规”。在“着色器模型”下选择 4_0_level_9_1。

于 2013-07-09T21:28:29.697 回答
0

您应该在创建 d3d11 设备时传入 D3D_FEATURE_LEVEL_9_1 功能级别。

D3D_FEATURE_LEVEL pFeatureLevels[] =
{
    D3D_FEATURE_LEVEL_9_1
};

ID3D11Device* pDevice;
ID3D11DeviceContext* pDeviceContext;
D3D_FEATURE_LEVEL eFeatureLevel;

D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, pFeatureLevels, 1,
     D3D11_SDK_VERSION, &pDevice, &eFeatureLevel, &pDeviceContext);
于 2013-06-24T14:20:27.840 回答