あまり勉強したことがない Metal 関係のリソースを物色中。
公式サンプル
おお!と思ったのは公式のサンプル紹介記事にあったこのプロジェクト(群)。
C++ と書いてあるが、「どーせ、これ Objective-C++ でしょ?」と思っていたが、れっきとした C++ だった。
例えば、Xcode で GUI アプリを作成した際、自動で生成される main.m に相当する部分は
int main( int argc, char* argv[] )
{
NS::AutoreleasePool* pAutoreleasePool = NS::AutoreleasePool::alloc()->init();
MyAppDelegate del;
NS::Application* pSharedApplication = NS::Application::sharedApplication();
pSharedApplication->setDelegate( &del );
pSharedApplication->run();
pAutoreleasePool->release();
return 0;
}
となっている。
言われてみれば Objective-C++ と C++ との対応はこうですね、って感じ。
三角形ばかり書いていてもつまらん
そんな方はこちらなんかも。
ただし、これは Swift の iOS プロジェクトなので、MacOS に移植する際にはいくらか(↓)修正が必要。
cocoa アプリでの Metal Viewer の取り扱い
手動で追加する。
NSObect のサブクラスとして適当な名前のクラスを作成した後に、MTKViewDelegate を書き加える。
また、以下の二つのメソッドは MTKViewDelegate を継承するには必須のようなので、付け加える。
参考(追記)
『MacでObjective-cを使ってMetalを初期化』
のシリーズを使って勉強しよう・・・と思っていたのだが、これは Objective-C で Metal を扱う際にはイマイチのやり方のようだ。
もともとアップル公式のサンプルは Objective-C で書かれており、これを Swift に移植したものが、上記シリーズ(というかネットに落ちている情報全般)っぽい。
この記事にならって丹念にアップル公式のサンプル眺めていくしかないかな。