vulkan uniform、推送常量、特化常量概念和用法

在Vulkan GLSL中,uniform bufferpush constantsspecialization constants是不同的机制,用于向着色器传递数据。下面我们就来简单记录一下每个概念的用法:

uniform buffer、push constants和specialization constants概念总结

1. Uniform Buffer

概念

  • Uniform Buffers 是一块存储在GPU上的内存区域,可以在多个着色器(甚至多个着色器阶段)之间共享一致的数据。
  • Uniform Buffers 可以容纳大量数据,可用于传递长生命周期的全局常量数据。

用法

1.1. 在GLSL中定义Uniform Buffer

layout(set = 0, binding = 0) uniform UBO {
    mat4 modelMatrix;
    mat4 viewMatrix;
    mat4 projectionMatrix;
} ubo;

1.2. 在Vulkan中创建Uniform Buffer

VkBufferCreateInfo bufferInfo = {
   };
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferInfo.size = sizeof(UniformBufferObject);
bufferInfo.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;

VkBuffer uniformBuffer;
vkCreateBuffer(device, &bufferInfo, nullptr, &uniformBuffer);

1.3. 绑定Uniform Buffer到Descriptor Set

VkDescriptorBufferInfo bufferInfo = {
   };
bufferInfo.buffer = uniformBuffer;
bufferInfo.offset = 0;
bufferInfo.range = sizeof(UniformBufferObject);

VkWriteDescriptorSet descriptorWrite = {
   };
descriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
descriptorWrite.dstSet = d
  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值