Publishing Direct3D Windows Store apps to the Windows Store (DirectX and C++)
[ This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation ]
There are some requirements you must consider when you are building a Windows Store app using DirectX with C++ that you plan on publishing to the Windows Store. This topic discusses how to specify the minimum Direct3D feature level that your application supports, and how to publish that information in your app description on the Windows Store.
Supporting Direct3D feature levels across the range of graphics hardware
When planning your Windows Store app using DirectX, review the following considerations:
- The Windows Store policy for Direct3D apps
- The minimum Direct3D feature level your app supports
- Any additional feature levels your app supports
- Publishing your feature level requirements in your Windows Store description
As discussed in Developing for different Direct3D feature levels, it is recommended that you provide full app functionality at Direct3D feature level 9_1 to reach the broadest range of customers. You can provide enhanced visuals and effects when your app is running on hardware that supports higher feature levels.
Windows Store policy for Windows Store apps using DirectX
The practical considerations for Windows Store app using DirectX developers are as follows:
- Apps that publish an ARM package must provide full app features on Direct3D feature level 9_1, in all packages (including x86 and x64) published for that app.
- Apps that only publish x86 and/or x64 packages may specify a higher minimum feature level on the Windows Store portal "Selling Details" page. This will restrict availability of your app only to systems that support the feature level you have specified. Note that when you require a higher minimum feature level, your app must still launch and run at feature level 9_1 to display a message describing which feature level is required.
- Optionally, your app detects the exact set of feature levels available at launch time, and takes advantage of whatever capabilities are available. In other words, make sure that your app works well at feature level 9_1, and detects higher feature levels like 9_3 and 10_0 when it launches so you can provide a better visual experience when those higher feature levels are available.
Specifying a minimum feature level for the Windows Store
In the "Selling Details" page for your app on the Windows Store portal, you can specify the minimum Direct3D feature level supported by your app. Making your app available on all systems means that your app must work on systems that support feature level 9_1 and higher. We recommend you support a minimum feature level of 9_1, since this support will make your app available on all Windows 8 and Windows RT systems. When you provide an ARM package for your app, this is the only choice available.
If your app only includes x86 and/or x64 app packages, and your app requires a higher Direct3D feature level to run well, you have the option of specifying one of the higher minimum feature levels on the "Selling Details" page. This will restrict the availability of your app to those systems which have hardware supporting the feature level you have specified. Note that even when you specify a higher feature level, your app must still launch and run at feature level 9_1 to display a message to the customer describing your hardware requirements. This is required because it is possible for the customer to change their graphics hardware after your app is installed.
Supporting multiple feature levels
Developing for different Direct3D feature levels (DirectX and C++) describes best practices for supporting multiple feature levels within a single app. By doing so, you can ensure that your app runs on all systems yet provides a richer visual experience for those customers who have more capable graphics hardware.
Publishing your feature level requirements to customers
On the Windows Store portal there is a "Description" page for entering information about your app. One of the parts of the description includes "Recommended hardware". If your app runs on all systems, then you do not enter any graphics hardware information in this section.
If you have specified one of the higher minimum supported Direct3D feature levels on the "Selling Details" page, you should do the following:
Add a line to the "Recommended hardware" section indicating the required feature level. For example, if you have specified that your app runs on feature level 9_3 and higher, then in the "Recommended hardware" section you should include this line:
Requires Direct3D feature level 9_3 or higher.
Detect at launch time what Direct3D feature levels are supported by the current system. If the system does not support the Direct3D feature level you have specified on the Windows Store portal, then you should display a message to the user like this one:
Your system provides Direct3D feature level 9_1, but this app requires Direct3D feature level 9_3 or higher.
In the message, make sure to list the system’s actual highest feature level.