2016-07-07 25 views
2

In der neuen Vulkan API gibt es eine Struktur, die benötigt wird, um eine VkInstance: VkApplicationInfo zu erstellen. Hier ist die Definition:Was ist der Sinn von VkApplicationInfo?

typedef struct VkApplicationInfo { 
    VkStructureType sType; 
    const void*  pNext; 
    const char*  pApplicationName; 
    uint32_t   applicationVersion; 
    const char*  pEngineName; 
    uint32_t   engineVersion; 
    uint32_t   apiVersion; 
} VkApplicationInfo; 

ich keine Verwendung finde in dem Anwendungsnamen, Anwendungsversion, Motornamen passieren zu müssen, oder Motorversion. Vielleicht könnte die Implementierung das Element pNext für was auch immer verwenden oder vielleicht überprüfen, ob die Implementierung das angegebene apiVersion unterstützt. Abgesehen davon verstehe ich nicht, warum die anderen Mitglieder angegeben sind. Die Vulkan-Spezifikationen sagen, dass Sie sogar NULL statt einer tatsächlichen VkApplicationInfo verwenden können, die es noch nutzloser macht. Können die Informationen aus dieser Struktur später in der App abgerufen werden, indem (z. B.) ein vkGetAppInfo(instance) oder ähnliches verwendet wird? Gibt es hinter dieser Struktur eine evil master plan? Oder ist das nur ein schlechtes Design? Wie auch immer, ich bin neugierig, warum es existiert und warum ich es benutzen sollte.

Antwort

8

Aus der Beschreibung:

Wenn nicht NULL, [pApplicationInfo] hilft Implementierungen Verhalten eigen Klassen von Anwendungen erkennen.

Also das ist, was es ist.

Anwendungsspezifische Optimierungen werden für jedes Programm stattfinden, das beliebt genug ist, um dieses Interesse zu wecken. Das ist unvermeidlich.

Also Vulkan hat zwei Möglichkeiten: Es kann entweder vorgeben, dass das Unvermeidliche irgendwie nicht passieren wird, was bedeutet, dass IHVs es trotzdem tun werden, verschiedene Heuristiken verwendend, um Ihre Anwendung zu erkennen. Oder Ihre Anwendung kann sich nur vorstellen und den Mittelmann herausschneiden.

Vulkan ermöglicht Ihnen, Letzteres zu tun. Und brave Motoren werden wahrscheinlich auch für Ihr Programm tun.

+0

Was sind IHVs? (Etwas Hardware-Anbieter, oder?) – Jerfov2

+0

Über welche Art von Optimierungen sprichst du hier? Sie erwähnen "Treiberspezifische Optimierungen", aber was bedeutet das? – Jerfov2

+0

@TheTromboneWilly: Sorry, falsches Wort. Überarbeitet. –