だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

Metal cocos 3

以下、作業しながらメモしたものなのであしからず…。
======================
EAGLViewのcontextの生成部分のMetal対応が必要で、そこでコンパイルエラーで止まっている。
contextは外部に公開されて使われているうようなので、その用途からMetalで相当するものを見つけるか。
もし相当するものがない場合は、互換レイヤーを今より上げて、GLViewのところでMetalViewを実装する必要があるかもしれない。
というか、どう見ても名前的にそちらのほうが正しいような気がする。

と、思ったが。GLViewはios抽象レイヤーの外なので、ここにMetalを入れるのも違うかも。てなると、今の実装で間違いじゃないのだけど…。
GLView部分にレイヤーを入れるとなると、大工事な気もする、調査してないし分からんけど。

にしても、VisualStudioに慣れきった体にはXcodeがキツイ…。

contextはGLのコンテキストのようだ。Metalでは不要な気がする。ってことでその辺はサクージョ。

実行すると"Metal default library not found"というメッセージでABORT。metalファイル(シェーダファイル)が見つからないためLibraryが作れないということらしく。
libcocos2dの中にいれたあったmetalファイルをtest-cpp-emptyのほう(スタートアッププロジェクト)にいれてやったら解決。

ShaderはとりあえずkShaderType_PositionTextureColor_noMVPだけswichcaseを対応。これ以外を使う場合programが見つからないで落ちるはず。

実行時にrenderEncorder.drawIndexPrimitivesでABORT。VertexBufferとIndexBufferをdraw前にreleaaseしてしまっているのが原因か?そもそも、頂点バッファとIndexBufferは最初に確保してあとは使いまわしたい気もする。それでよければsetupVBOの辺で初期化してやれば良いし、Metalサンプル見て、そういう運用じゃなさそうなら何か考える。

ViewとRenderer周りを整理するために書いたクラス図
f:id:nyakagawan:20141208002027p:plain