限制Windows RT设备的3D应用程序

时间:2013-06-22 12:59:29

标签: windows-8 microsoft-metro directx direct3d windows-rt

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

我需要知道以下两件事:

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

•如何将应用程序限制为DirectX功能级别9_1?

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

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

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

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

如何将应用程序限制为DirectX功能级别9_1?

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

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

答案 1 :(得分:1)

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

答案 2 :(得分: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);