Guardando attraverso Demo C++ Vulkan di Sascha Willem ospitato su GitHub, ho notato che alcune funzioni hanno restituito il tipo di dati VkBool32
.Perché VkBool32 di Vulkan è implementato come int unsigned?
ero curioso di perché Khronos non usavano un bool normale quando ho notato che la linea
typedef uint32_t VkBool32;
in vulkan.h. L'uint32_t è definito come
typedef unsigned int uint32_t;
in stdint.h.
La mia domanda è: perché fa Sense buttare via 3 byte se un Bool standard farebbe il lavoro con un solo byte? La mia piccola Recherche ha mostrato che non vi è alcuna differenza in termini di prestazioni (vedi Which is faster : if (bool) or if(int)?), e Khronos ha affermato che volevano ridurre al minimo i problemi di compatibilità (in questo caso il vecchio C non avendo un tipo booleano primitivo) nell'ordine di concentrarsi sul codice moderno.
(Vedi citazione di Trevett tratto da here)
una riprogettazione terra-up, non siamo compatibili
Sembra che tu abbia già risposto alla tua domanda lì – JustSid
"Khronos ha affermato che volevano ridurre al minimo i problemi di compatibilità (in questo caso il vecchio C non ha un tipo booleano primitivo)" –
"un Bool standard avrebbe fatto il lavoro solo con un byte "- ipotesi infondata. Troverete più di un compilatore che ha 'sizeof (bool) == sizeof (int)'. – MSalters