Vulkan中使用的许多结构都有一个sType成员,用于标识结构的类型,以及一个pNext成员,用于特定于扩展的结构.这个答案很好地解释了sType成员的用途,以及为什么需要它.它简要介绍了pNext,虽然我不确定我理解它背后的基本原理.
如果每个结构的第一个成员都是sType,那么当扩展需要不同/额外的参数时,它们是否只能定义自己的结构类型?
如规范中明确规定:
任何参数是含有一个结构
void*pNext构件必须具有值pNext要么是NULL,或点到由启用扩展中定义的有效结构.
这是扩展.
如果每个结构的第一个成员都是sType,那么当扩展需要不同/额外的参数时,它们是否只能定义自己的结构类型?
这不可能是可扩展的.
只有一个sType领域.那么两个扩展如何使用新值扩展相同的API?同样,旧扩展如何与新版本的Vulkan一起使用,而Vulkan本身使用的是不同的数据结构sType.
有了pNext,你没有那个问题.每个扩展数据结构不仅有自己的内部sType字段,而且毫无疑问它也有自己的pNext字段.因此,多个扩展可以扩展相同的数据结构.
sType 不需要这个,因为它只会在更高版本的Vulkan中更改.
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |