2017-02-13 4 views
0

Bei der Programmierung mit DirectX, verwendet nicht-UWP Praktiken und Dinge wie WinMain und WinProc möglich? Ich habe ein älteres Buch über Win32 für DirectX, aber es ist völlig anders als UWP.In DirectX mit UWP, kann Win32 verwendet werden?

+0

UWP verwendet die 'WinMain' Eintrag Punkt, wie jede Windows-Desktop-Anwendung. Und da DirectX ein Jahrzehnt älter ist als UWP, können Sie Windows Desktop-Anwendungen mit DirectX schreiben. Warum würdest du das anders annehmen? Wie auch immer, es ist schwer zu sagen, was du hier wirklich willst. – IInspectable

+0

Ich las WinMain und WinProc waren in UWP verschwunden. Bearbeiten:. Ich versuche zu sehen, ob es Zeitverschwendung ist, win32 für neue Projekte zu lernen. – johnny

+0

Ich bin nicht sicher, welche Art von Magie Sie dem vom Benutzer bereitgestellten Einstiegspunkt zuordnen. Es ist nur ein Symbol, und es könnte alles sein. Der Einstiegspunkt von UWP ist immer noch derselbe wie für jede Win32-Anwendung, aber abhängig von der Sprachprojektion sehen Sie dies möglicherweise nicht so. Ist es eine Verschwendung, die Windows-API zu lernen? Ich würde sagen: Nein, niemals. UWP ist Win32, nur mit vielen COM aufgefüllt. – IInspectable

Antwort

2

DirectX 11 wird von der Universal Windows Platform (UWP) unterstützt und die Kern-API ist die gleiche wie in klassischen Win32-Desktop-Apps. Die großen Unterschiede liegen in den Dienstprogrammbibliotheken, da Sie die veraltete Bibliothek D3DX in einem UWP und die Verwendung von CoreWindow anstelle von Win32-Nachrichten und WndProc nicht verwenden können.

MSDN
Where is the DirectX SDK (2015 Edition)?
Living without D3DX

Sie sollten einen Blick auf this post auf DirectX Buchempfehlungen nehmen, sowie die DirectX Tool Kit tutorials.

Wenn Ihr Buch ist alt genug, um Direct3D 9 oder Direct3D 10 sprechen zu werden, dann für UWP nicht sinnvoll es ist.

Die ‚Hauptanwendung‘ Entry-Point und Schleife sind unterschiedlich in UWP, wenn die C++/CX Spracherweiterungen oder mit Hilfe der Sprach C++/WinRT Projektionen verwendet wird. Das heißt, Sie können dies leicht isolieren und konzentrieren Sie sich nur auf eine DirectX-Swapchain und -Rendering, die in Win32 Classic Desktop- und UWP-Apps die gleichen sind. Ich mache das in meinem Direct3D VS Game templates, die für beide Plattformen gleich strukturiert sind.

Für C++/CX UWP-Anwendungen, die Entry-Punkt ist:

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; 
} 

Für C++/WinRT UWP-Anwendungen, die Entry-Punkt ist:

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; 
} 
+0

Das wird mich lehren, ein Buch über 2,02 $ bei Goodwill zu kaufen. Ich vergaß UWP, als ich es kaufte, aber dann war es zu spät All Sales Final im Secondhand-Laden. Es ist ein guter Grund. – johnny

Verwandte Themen