VkDrawIndexedIndirectCommand firstIndex 和 firstInstance 这两个参数区别区别

1.firstIndex:

VkDrawIndexedIndirectCommand cmd = {
   
     
    .indexCount = 36,     // 每个物体36个索引(比如立方体)  
    .firstIndex = 1000    // 从索引缓冲区的第1000个位置开始读取  
};
  • 控制从索引缓冲区的哪个位置开始读取索引数据
  • 影响 gl_VertexIndex 的值
  • 用于在一个大的索引缓冲区中定位不同模型的索引数据
  • 所有实例共用这些索引数据

2.firstInstance

VkDrawIndexedIndirectCommand cmd = {
   
     
    .instanceCount = 2000,    // 绘制2000个实例  
    .firstInstance = 1000     // 从第1000个实例开始  
};
  • 控制实例ID的起始值
  • 影响 gl_InstanceIndex 的值
  • 用于在实例数据缓冲区中定位不同批次的实例数据
  • 每个实例使用不同的实例数据
// 顶点着色器  
#version 450  

// 顶点数据  
layout(location = 0) in vec3 inPosition;  

// 实例数据  
struct InstanceData {
   
     
    vec4 position;  
    vec4 color;  
};  
layout(set = 0, binding = 0) buffer InstanceBuffer {
   
     
    InstanceData instances
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值