Durch Sascha Willems C++ Vulkan Demos, gehostet auf GitHub, bemerkte ich, dass einige Funktionen den Datentyp VkBool32
zurückgaben.Warum wird VkBool32 von Vulkan als unsigned int implementiert?
Ich war neugierig, warum Khronos hat keinen normalen bool verwenden, wenn ich die Linie bemerkt
typedef uint32_t VkBool32;
in vulkan.h. Die uint32_t als
definierttypedef unsigned int uint32_t;
in stdint.h.
Meine Frage ist, warum macht es Sinn, 3 Bytes wegzuwerfen, wenn ein Standard-Bool den Job mit nur einem Byte erledigen würde? Meine kleine Recherche zeigte, dass es so gut wie keine Leistungsdifferenz gibt (siehe Which is faster : if (bool) or if(int)?), und Khronos selbst sagte, dass sie Kompatibilitätsprobleme minimieren wollten (in diesem Fall hatte altes C keinen primitiven booleschen Typ), um auf modernen Code zu fokussieren.
(siehe Zitat von here genommen Trevett ist)
einen Boden-up-Redesign, sind wir nicht rückwärts
Es scheint, als ob Sie bereits Ihre eigene Frage beantwortet – JustSid
"Khronos selbst sagte, dass sie Kompatibilitätsprobleme minimieren wollten (in diesem Fall alte C nicht einen primitiven booleschen Typ)" –
"ein Standard Bool würde den Job mit nur tun ein Byte "- unbegründete Annahme. Sie werden mehr als einen Compiler finden, der 'sizeof (bool) == sizeof (int)' hat. – MSalters