[英]In Directx with UWP, can win32 be used?
使用DirectX編程時,是否使用非UWP慣例並保持WinMain和WinProc之類的功能? 我在Direct32的Win32上有一本舊書,但是與UWP完全不同。
通用Windows平台(UWP)支持DirectX 11,其核心API與經典Win32桌面應用程序中的API相同。 實用程序庫之間的最大區別在於,您不能在UWP中使用已棄用的D3DX
庫,而不能使用CoreWindow
而不是Win32消息和WndProc
。
MSDN
DirectX SDK(2015版)在哪里?
沒有D3DX的生活
您應該閱讀有關DirectX推薦書的文章以及DirectX Tool Kit教程 。
如果您的書足夠老,可以談論Direct3D 9或Direct3D 10,那么對UWP來說就沒有用了。
使用C ++ / CX語言擴展或使用C ++ / WinRT語言投影時,UWP中的“主應用程序”入口點和循環是不同的。 就是說,您可以輕松地將其隔離,僅關注DirectX交換鏈和渲染,這在Win32經典桌面和UWP應用中都是相同的。 我在Direct3D VS Game模板中執行此操作,這兩個平台的結構相同。
對於C ++ / CX UWP應用,切入點是:
ref class ViewProvider sealed : public IFrameworkView
{
/* There is no WndProc. This class registers for events instead. */
}
ref class ViewProviderFactory : IFrameworkViewSource
{
public:
virtual IFrameworkView^ CreateView()
{
return ref new ViewProvider();
}
};
[Platform::MTAThread]
int __cdecl main(Platform::Array<Platform::String^>^ argv)
{
auto viewProviderFactory = ref new ViewProviderFactory();
CoreApplication::Run(viewProviderFactory);
return 0;
}
對於C ++ / WinRT UWP應用,入口點是:
class ViewProvider final :
public winrt::implements<ViewProvider, IFrameworkView>
{
/* There is no WndProc. This class registers for events instead. */
}
class ViewProviderFactory final : public
winrt::implements<ViewProviderFactory, IFrameworkViewSource>
{
public:
IFrameworkView CreateView()
{
return winrt::make<ViewProvider>();
}
};
int WINAPI wWinMain(
_In_ HINSTANCE hInstance,
_In_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow
)
{
ViewProviderFactory viewProviderFactory;
CoreApplication::Run(viewProviderFactory);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.