Metalのシェーダーで転送した情報のうち、一部が欠ける
MetalでVertexShaderにマテリアルの情報を転送するために、以下のような構造体を定義してmakebufferしてからの、データをマッピングしたとき、21個のマテリアル情報をセットしたのに、実際は17個分しか転送されなかった。
struct material
{
float4 ambientColor;
float4 diffuseColor;
float4 specularColor;
float specularPower;
};
以下のように構造体のByte数を無理やり16の倍数に変更すると正しく動作した。
struct material//計64Byte
{
float4 ambientColor;// 4 * 4 = 16Byte
float4 diffuseColor;// 4 * 4 = 16Byte
float4 specularColor;// 4 * 4 = 16Byte
float specularPower;// 4Byte
float space1;// 4Byte
float space2;// 4Byte
float space3;// 4Byte
};
Metalへデータを転送するときに構造体を使用するときは、1つの構造体のByte数が16の倍数になるようにしないといけないみたいです。
Author And Source
この問題について(Metalのシェーダーで転送した情報のうち、一部が欠ける), 我々は、より多くの情報をここで見つけました https://qiita.com/minami_11/items/df1e96657dbd0d7af7ac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .