こんにちはみんな、
現在、hlslシェーダーに値を渡そうとしています。ここで、シェーダーの定数バッファーを次に示します。
cbuffer ConstantBuffer
{
float4x4 final;
float4x4 rotation; // the rotation matrix
float4 lightvec; // the light's vector
float4 lightcol; // the light's color
float4 ambientcol; // the ambient light's color
float3 SPACE;
float alpha; // <-- Variable trying to recieve, the first 5 works!
}
そしてc++では:
struct CBUFFER
{
public:
D3DXMATRIX Final;
D3DXMATRIX Rotation;
D3DXVECTOR4 LightVector;
D3DXCOLOR LightColor;
D3DXCOLOR AmbientColor;
D3DXVECTOR3 SPACE;
float Alpha;
};
そこで、16ビットのパックで送信できるように変数を調整しようとしました。しかし、シェーダーの変数alphaが設定されていないため、何らかの理由で機能していません。
だから私は何を間違えましたか?(追記:シェーダーの初期化でバッファー幅を192に設定しました)
ありがとうございました