簡體   English   中英

在具有UWP的Directx中,可以使用win32嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM