使用DirectX進行編程時,是否使用非UWP實踐並使WinMain和WinProc成爲可能?我有一本關於DirectX的win32舊書,但它與UWP完全不同。在DirectX與UWP,可以使用win32嗎?
回答
通用Windows平臺(UWP)支持DirectX 11,核心API與傳統Win32桌面應用程序中的相同。在實用程序庫中有很大的區別,因爲您不能在UWP中使用已棄用的D3DX
庫,並且使用CoreWindow
代替Win32消息和WndProc
。
MSDN
Where is the DirectX SDK (2015 Edition)?
Living without D3DX
你應該看看this post在DirectX書的建議,還有DirectX Tool Kit tutorials。
如果你的書夠大了,談論的Direct3D 9或Direct3D 10的,那麼它是不是有用UWP。
「主應用程序的入口點和循環使用C++/CX語言擴展,或使用C++/WinRT語言突起時處於不同UWP。也就是說,你可以很容易地將它隔離開來,只關注DirectX交換鏈和渲染,這些在Win32 classic桌面和UWP應用程序中都是一樣的。我在Direct3D VS Game templates這兩個平臺的結構相同。
對於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;
}
這會教我在Goodwill購買2.02美元的書。當我買了它時,我忘記了UWP,但是在舊金山的商店銷售總決賽已經太晚了。這是一個很好的原因。 – johnny
- 1. 在DirectX中使用GLUTesselator可以嗎?
- 2. DirectX 11/12沒有UWP可能嗎?
- 3. Java上可以使用DirectX嗎?
- 4. UWP和DirectX
- 5. 我可以在沒有DirectX 11卡的情況下使用DirectX 11 SDK嗎?
- 6. 我可以在JScript .NET中使用DirectX:
- 7. DirectX 11.1和Win32 Desktop
- 8. UWP可以在.NET中運行嗎?
- 9. 我可以使用C#開發DirectX應用程序嗎?
- 10. 可以在Win32資源文件中使用unicode字符嗎?
- 11. 我可以在「Delphi 2007 for Win32」中使用.NET DLL嗎?
- 12. 我可以在dotNet編譯的exe上使用Win32 API ExtractIcon()嗎?
- 13. 你可以在UWP中的C#代碼中使用C++ DLL嗎?
- 14. XNA/DirectX 10/11 - VertexBuffer可以重複使用嗎?
- 15. DirectX可以使WPF應用程序渲染得非常慢嗎?
- 16. C#桌面應用程序可以使用UWP組件嗎?
- 17. UWP開發C++,C#,DirectX
- 18. uwp directx和c#開發
- 19. 我可以使用Win32.TaskScheduler來安排我的程序嗎?
- 20. 我可以使用Microsoft Visual Studio Lightswitch 2011編程WIN32 API嗎?
- 21. 可以使用Java來編寫Win32系統服務嗎?
- 22. 使用WinPhone 8的庫開發Win10 UWP,我可以嗎?
- 23. crtdbg.h與DirectX衝突嗎?
- 24. DirectX診斷模式不適用於Win32(?)
- 25. 在UWP中混合使用DirectX 12和XAML控件
- 26. 在Windows上使用UWP地理位置-API與Win32的應用程序10
- 27. 我可以在Windows 10上刷新JavaScript UWP應用程序嗎?
- 28. 您可以在全屏DirectX圖層上進行Winform繪圖嗎?
- 29. DirectX 12開發現在可以向公衆開放嗎?
- 30. Directx9/10程序可以在Directx 11中運行嗎?
UWP使用'WinMain'條目點,就像任何Windows桌面應用程序一樣。由於DirectX比UWP早十年,所以您當然可以使用DirectX編寫Windows桌面應用程序。你爲什麼會另有其他假設?無論如何,很難說,在這之後你真的是什麼。 – IInspectable
我讀了WinMain,並且WinProc在UWP中消失了。編輯:。我試圖看看爲新項目學習win32是否浪費時間。 – johnny
我不確定你用戶提供的入口點屬於哪種魔法。這只是一個象徵,它可以是任何東西。實際上,UWP的入口點與任何Win32應用程序的入口點仍然相同,但取決於語言預測,您可能不會看到這一點。學習Windows API是浪費嗎?我會說:不,從不。 UWP是Win32,只是用很多COM填充。 – IInspectable