VulkanとDirect3D 12が難しすぎる件
私は2023年に入ってから、本格的にゲーム開発をしようと思いまして、OpenGLやDirect3D 11、Metalといった3DグラフィックスAPIを勉強し始めました。そしてこういったAPIを勉強する上で、最新のローレベルグラフィックスAPIであるVulkanとDirect3D 12の存在を無視することができません。
順番としては、まず最初はOpenGLをやり、その次にDirectX 11、そしてMetalというように勉強していきました。ここまではまだ理解することができていて、自分で実際にこれらのAPIを使ったコードを書くこともできていました。
しかし、問題はその次に始めたVulkanです。言うまでもなくAPIが複雑であり、学習リソースが少な過ぎるのです。Vulkanのチュートリアルはない訳ではありません。しかし、それらを読んだとしても、自分で使いこなせるほどの理解には到達できないのです。必然的に、Vulkanの仕様書に向き合うことになるのですが、Core APIだけでも1500ページくらいあり、途方に暮れる長さです。
それに、Vulkanはメモリ管理もシビアな印象です。下手に扱うと、旧来のAPIを使う場合よりも効率が悪くなる恐れがあります。幸いにも、メモリ管理については、VulkanMemoryAllocatorというライブラリがAMDからリリースされているので、もしVulkanをやるなら使うべきでしょう。
結局のところ、Vulkanというのは、デベロッパに最大限の自由と責任を与えるAPIというわけです。やるからには相当な覚悟を持つべきなのです。
Direct3D 12に関してはあまり触っていないのでなんとも言えませんが、そもそもチュートリアルがネット上には全然無いです。一応知る限りでは日本語の本が2冊、英語の本が1冊あるだけです。サンプルコードを見る限りはVulkanよりは簡単そうですが、ミップマップを生成するためにコンピュートシェーダを使う必要があったりと、また違う苦労がありそうです(予め生成することを想定しているのでしょう)。
ということで、VulkanとDirect3D 12は難易度が高すぎるので、あくまで研究対象的に調べておくだけにしておこうと思います。なのでひとまずは、OpenGL、Direct3D 11、Metalを使ってゲームを作っていくことにします。OpenGLやDirect3D 11が使えなくなることは、すぐには起きないはずです(Appleを除く)。
VulkanやDirect3D 12に対応したい場合には、wgpuというライブラリが使えそうです。