fsharp 初めるのにいい題材は無いかと探索していたら、 Desktop版の WGPU の FSharp サンプルを発見。
Windows11
上の .Net8
で動作したので、これでやってみることにした。
WGPU.Native/examples/FSharp at main · ginger-code/WGPU.Native
Low-level wgpu-native bindings for .NET . Contribute to ginger-code/WGPU.Native development by creating an account on GitHub.
https://github.com/ginger-code/WGPU.Native/tree/main/examples/FSharp
改造写経して、fsharp と wgpu を少し理解。
GitHub - ousttrue/wgpu_fsharp
Contribute to ousttrue/wgpu_fsharp development by creating an account on GitHub.
https://github.com/ousttrue/wgpu_fsharp
- Windows11 動いた
- Ubuntu:23.10(wayland) swapchain 作成クラッシュ。code 139
- Ubuntu:22.04(X11) 動いた
FSharp ではまる
少しずつ慣れていきつつ。
関数引数の tuple と () 有無でひっかかる
複数引数は tuple にするべきか否か。 とりあえず、 member は tuple にするという方針した。
fsproj のソースの順番に意味がある
動く
コンパイルエラー。
まさかこんなところに罠が・・・
member呼び出しは括弧で囲む
nvim
=
, =
だと indent が壊れる
lsp とか使う。
Ionide-vim: 文字列中で ]
をタイプすると自動で変な indent になる
よくわからなかった。
Ionide-vim の使用は休止して、lspconfig の fsautocomplete
が動くようにした。
Sytax Highight がよわよわになった。後で調べる。
vulkan よりだいぶ楽
WGPU は今年になってから Desktop の chrome で利用可能になったばかりなので、 まだ Android に来るのは少し時間がかかるかもしれないが、 Quest と Apple のVision Pro とかあの辺りから意外と速く動くようになるような気がするので、 仕込みを開始する・・・。
browser 上の wgpu だとOS 毎の Surface…Device…Swapchain の初期化が browser 任せになるのでもっと簡単になる。