2012-04-10 12 views
1

て来ていない私は今、すべての行列の配信を受けるのDirectX 10/11定数バッファの内容が

C++

cbuffer MatrixBuffer : register(b1) { 
float4x4 aMatrixTransforms[24]; 
float aMatrixWeights[24]; 
uint UsedMatrices; 
float3 Unused; 
} 
HLSLで

struct stMBuffer { 
D3DXMATRIX aMatrixTransforms[24]; 
float aMatrixWeights[24]; 
unsigned int UsedMatrices; 
D3DXVECTOR3 Unused; 
}; 

として定義され、一定のバッファを作りましたaMatrixWeights配列の最初の5つの要素だけでなく、正常に終了しましたが、それ以降は0はありません。誰も何が起こっているのか知っていますか?ありがとう。

答えて

0

作成しているバッファのサイズを確認してください。また、デバッグレイヤーを使用することもできます。

+0

hlslは構造体のすべての要素が16バイトの浮動小数点型として渡され、残りのデータは転送されますが、配列要素間の迷路では失われてしまいます。 floatはxyzwが浮動小数点数で到着します。だから16バイトのパッキングを回避する方法はありますか? –

+0

これは奇妙です - 実際にバッファに来るものはPIXでチェックしましたか? – asmi84

関連する問題