In allen create info structs (vk*CreateInfo
) in der neuen Vulkan API gibt es IMMER einen .sType
Member. Warum ist das da, wenn der Wert nur eine Sache sein kann? Auch die Vulkan-Spezifikation ist sehr explizit, dass Sie nur vk*CreateInfo
Strukturen als Parameter für ihre entsprechende vkCreate*
Funktion verwenden können. Es scheint ein wenig überflüssig. Ich kann sehen, dass, wenn der Treiber diese Struktur direkt an die GPU übergibt, Sie diese benötigen (ich habe bemerkt, dass es immer das erste Mitglied ist). Aber das scheint eine wirklich schlechte Idee für die App zu sein, denn wenn der Treiber es tun würde, wären Apps viel weniger fehleranfällig, und das Voranstellen eines int an eine Struktur scheint nicht wie eine extrem rechenintensive Operation zu sein. Ich sehe einfach nicht, warum es existiert.Vulkan: Was ist der Punkt von sType in vk * CreateInfo-Strukturen?
TL; DR
Warum die vk*CreateInfo
structs haben das .sType
Mitglied?
Warum sollte eine hypothetische 1.1 SDK-Version nur die aktualisierte 'vkCreateCommandBufferPool()' Definition mit der aktualisierten Signatur enthalten? Die meisten Bibliotheken enthalten nicht alle Revisionen ihrer Strukturen aus dem gesamten Versionsverlauf. Warum sollte eine Bibliothek wie Vulkan das tun? Oder sind Bibliotheken wie diese einzigartig, weil eine Anwendung möglicherweise auf eine ältere Struktur zurückgreifen muss, abhängig von den Fähigkeiten der Hardware? – spaaarky21
@ spaaarky21: Weil sie es versprochen haben. Die Spezifikation von Vulkan legt dar, wie Versionierung funktioniert. Es beschreibt, welche Änderungen für welche Art von Versionsänderungen vorgenommen werden. Geringfügige Versionsänderungen sind so spezifiziert, dass sie abwärtskompatibel zu allen niedrigeren Nebenversionen derselben Hauptversion sind. Wenn ich also Code gegen 1.0 schreibe, wird es bei einer 1.1 oder 1.2 Implementierung funktionieren. Aber es gibt keine Garantie, dass es auf 2.0 oder 3.0 funktioniert. –