DirectX3D cbuffer和tbuffer

cbuffer和tbuffer,Shader Model 4支持的新特性,通过打包数据可以获得更好的性能。

关于Shader与应用程序间的数据传递。要传递的数据主要有 constant buffer,SamplerState,Texture2D(resource)。

这里要先提一下DirectX10中新引入的constant buffer。在DX10中,constant存放于常量缓冲区中,每个常量缓冲区由 4096个常量寄存器组成,共有16个常量缓冲区。

constant buffer会为 两种:cbuffer和tbuffer。注意tbuffer是并不是用来存储纹理的,而是指可以像纹理那样来访问其中的数据,对于索引类数据有更好的性能。

 

为什么使用cbuffer?

cbuffer通过允许将着色常量组合在一起并同时提交,而不是单独调用以提交每个常量,从而减少更新着色常量所需的带宽。

有效使用常量缓冲区的最佳方法是把更新比较频繁的着色器变量组织为cbuffer。这允许应用程序最小化更新着色器常量所需的带宽。

 

HLSL打包规则

HLSL打包规则类似于使用Visual Studio执行pragma pack 4,它将数据打包成4字节的边界。此外,HLSL打包数据,使其不跨越16字节的边界。变量被压缩到一个给定的四分量向量中,直到变量跨越一个四分量边界;下一个变量将被放到下一个四分量向量。更详细的讨论:https://blog.csdn.net/X_Jun96/article/details/81283268<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值