由于hlsl数据的存储以及数据格式的多种原因,导致在计算的时候有很多小规则,如果不注意很容易出问题。
1.变量的初始化:
理论上来说float4 color = 0; 是没有错的,但是如果这样初始化在对其进行计算的时候会出问题,例如简单的+和*计算都会直接报错,所以在初始化的时候最好能够float4 color = float4(0,0,0,0);这样写。
重要:HLSL的结构体struct其实并不管你是一个变量还是几个变量,它就是按照一次放满一个float4的内存长度,多少变量都往一个float4里面塞,塞满了再接着塞下一个float4。测试结果显示:cbuffer的长度必须是float4的整数倍才行,不知道float+float3的这种组合是否可以正常获取数据,也不清楚