「MonoGameでHLSLにMatrixを渡す」の版間の差分

編集の要約なし
編集の要約なし
1行目: 1行目:
[[ハードウェアインスタンシング]]を利用するにあたり[[C♯]]から[[HLSL]]にMatrix型の[[World座標]]を[[バーテックスバッファ]]経由で渡したい。
[[ハードウェアインスタンシング]]を利用するにあたり[[C♯]]から[[HLSL]]にMatrix型の[[World座標]]を[[バーテックスバッファ]]経由で渡したい。


しかしMonoGameでは[[HLSL]]に渡すデータ型を示すVertexElementFormatは「Vector4」が最大となっており、Vector4が4個セットになっているMatrix型は渡せない。
しかしMonoGameから[[HLSL]]に渡す際にデータ型を明示するVertexElementFormatは「Vector4」が最大となっている。Matrix型はない。


そこでMatrixはVector4の4倍と仮定してVector4を4個ズラズラ列べる。
そこで「MatrixはVector4が4個セットになったもの」と仮定してVector4を4個ズラズラ列べてみる。VertexElementUsageはfloat4型のセマンティクス、かつ誰も使ってないであろうBlendWeightを指定した。
VertexElementUsageはfloat4型のセマンティクス、かつ誰も使ってないであろうBlendWeightを指定した。


<syntaxhighlight lang="csharp">
<syntaxhighlight lang="csharp">