小编ned*_*edb的帖子

为什么GLSL变化为进/出?

我知道如何使用输入/输出变量和变量变量.我完全清楚使用输入/输出变量更好,因为它不被弃用.

这是一个非常小的事情,但我真的不明白为什么他们改变了这一点.以前我可以将代码放在一个着色器中,将其复制并粘贴到另一个着色器中,这样就可以了.现在我必须将它粘贴到另一个并将所有内容更改为"out"(而不是"in").

我不介意这样做,我只是对进/出变量是否有优势感到非常好奇,如果没有,为什么Khronos组会改变它.

opengl shader glsl

10
推荐指数
1
解决办法
3691
查看次数

为什么VkShaderStageFlagBits是一个位掩码?

在Vulkan中,您可以指定结构的VkPipelineShaderStageCreateInfo's' VkGraphicsPipelineCreateInfo,并且可能VkPipelineShaderStageCreateInfo每个着色器阶段应该有一个(例如顶点和片段着色器).

那么为什么stage类型的字段字段恰好是vkShaderStageFlagBits因为它更接近于某种Vulkan约定呢?

我的困惑是我被引导相信你以这种方式使用Bitmask的唯一原因是,如果你需要将位组合在一起.(例如,对于flags所有Vulkan结构中的一般字段).我试图找到答案,所以我查看了Vulkan Spec,这让我更加困惑!这是因为它们有两位VK_SHADER_STAGE_ALL_GRAPHICS,VK_SHADER_STAGE_ALL这些位被定义为:

VK_SHADER_STAGE_ALL_GRAPHICS是用作速记的位组合,用于指定上面定义的所有图形阶段(不包括计算阶段).

VK_SHADER_STAGE_ALL是用作速记指定由该装置支持的所有着色器阶段,包括其通过扩展引入的所有附加的级位的组合.

好吧,如果他们应该是"速记"来指定所有位,这是否意味着一个着色器阶段,应该能够代表所有阶段的版本?

提前致谢!

graphics bit-manipulation bitmask bit vulkan

4
推荐指数
1
解决办法
144
查看次数

标签 统计

bit ×1

bit-manipulation ×1

bitmask ×1

glsl ×1

graphics ×1

opengl ×1

shader ×1

vulkan ×1