差分

ナビゲーションに移動 検索に移動

主なグラフィックスAPIのメモリアライメント

917 バイト追加, 2024年4月18日 (木)
ページの作成:「== Direct3D == Direct3Dでは16バイト区切りにする。16バイトの境界線を跨ぐように変数を配置しないこと。 NG <source lang="c"> stru…」
== Direct3D ==
[[Direct3D]]では16バイト区切りにする。16バイトの境界線を跨ぐように[[変数]]を配置しないこと。

NG
<source lang="c">
struct Buffer1 {
flaot3 a ; 0 + 12 = 12
float2 b ; 12 + 8 = 20 NG
}
</source>

OK
<source lang="c">
struct Buffer1 {
float3 a ; 0 + 12 = 12
float1 _dummy1 ; 12 + 4 = 16 # OK
float2 b ; 0 + 8 = 8 # 16ごとに0にリセット
}
</source>

== Vulkan ==
[[Vulkan]]は[[GPU]](の[[ドライバ]])ごとに[[仕様]]が異なる前代未聞のクソ仕様。
そのクソ仕様はVkMemoryRequirements構造体に格納されるのでalignmentメンバーの整数倍にする。

[[AMD]]が作ってくれた[[Vulkan Memory Allocator]]を使いましょう。

== Metal ==
[[Metal]]は深く考えなくても良いらしいが、とりあえず[[Direct3D]]に合わせとけ。

[[画像処理]]

案内メニュー