Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 8 限制Windows RT设备的3D应用程序_Windows 8_Microsoft Metro_Directx_Direct3d_Windows Rt - Fatal编程技术网

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

Windows 8 限制Windows RT设备的3D应用程序,windows-8,microsoft-metro,directx,direct3d,windows-rt,Windows 8,Microsoft Metro,Directx,Direct3d,Windows Rt,我正在使用Visual Studio 2012 Express和Blender为Windows应用商店(Metro应用程序)开发一款3D游戏,用于创建3D对象(fbx)。我使用Visual Studio 3D初学者工具包在游戏中导入fbx文件。目前我只在Windows8机器上测试了我的应用程序,现在,我也想在WindowsRT设备上测试它。在Microsoft论坛上,我读到如果我想在Windows RT设备上部署构建,我需要将我的应用程序限制在功能级别9_1 我需要知道以下两件事: •如何在Wi

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

我需要知道以下两件事:

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

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


任何帮助都将不胜感激。

在创建d3d11设备时,您应该通过D3D\U功能级别\U 9\U 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);

除了ALNW之外,如果解决方案中有任何着色器,请在VS中为每个着色器打开属性页,展开“HLSL编译器”并选择“常规”。在“着色器模型”下选择4\u 0\u级别\u 9\u 1

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

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

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

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

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


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

考虑使用xna,因为它易于使用和学习,这可能会有帮助[link],感谢您的回复。我几乎完成了60%的应用程序,我使用DirectX(没有任何框架)开发了它。此时,我真的很难转换到XNA框架。我的应用程序在Windows 8上运行良好,但在Windows RT上运行滞后。因此,根据我的研究,我发现我需要将应用程序限制在功能级别9_1,但我找不到如何做到这一点。如果你能向我推荐一个与此相关的解决方案,那将非常有帮助。你不能限制功能级别。功能级别是传递给设备创建的参数。如果指定适当的级别,则软件可以在WinRT设备上运行。Visual Studio着色器设计器(DGSL)创建的着色器仅在功能级别10+上工作。有一个解决办法,可以基本导出HLSL源(导出到HLSL…),然后手动尝试为可能需要手动编辑的9.x功能级别构建它。这使得使用DGSL管道对Surface RT(FL 9.1)或Windows phone 8.x(FL 9.3)具有挑战性,但可行。VS初学者工具包和DirectX工具包在这里支持一些名称技巧,以便为VS内容管道导出的模型加载“正确”的DGSL着色器(在FL 9.x上查找.CSO而不是.DGSL.CSO)。请注意,尽管这样做可行,生产应用程序的一个更健壮的解决方案是列出9.1和10.0,因为使用10.0或更高版本(如果可用)会带来显著的性能好处。当然,清单9.1对于调试来说是一种有用的模式。为了更好地理解Direct3D硬件功能级别,您也应该对此进行检查。我理解您的观点,但OP清楚地知道他仅限于特定的功能级别。如果OP的代码包含null PFeatureLevel或数组包含的FL 9.1以上,然后你会得到一个“可能的最高”功能级别的设备。通过只提供9.1选项,它只能作为FL 9.1获得成功。这不是100%精确的模拟(比如纹理大小边界是“最小值”,因此即使在FL 9.1中,某些卡也可以让您创建更大的纹理),但是当您使用“更高功能”级别的API特性时,比使用FL 10.0+设备进行开发测试时,更容易得到错误代码和调试输出。注意:不要使用在搜索中键入“dxcp”时,“DirectX控制面板”选项可能会显示在“开始”菜单/屏幕上。这不会给您限制功能级别的选项,而且会非常烦人!请从命令行使用dxcp.exe!