Metal と OpenGL
OpenGL はネット上で独学できるリソースが転がっているのがいいなあ。
『独学で一ヶ月間 OpenGL を学んで得た基礎知識のまとめ』
このシリーズは、初学者向け。軽快な口調で読みやすい。
Metal はなあ・・・(遠い目)。
メモ
某プロジェクトでキモになるのはシェーダーへの頂点データの渡し方。
具体的には、以下の for in ループで以下のように渡している。
for mesh in model.meshes {
let vertexBuffer = mesh.mtkMesh.vertexBuffers[0].buffer
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0,
index: 0)
for submesh in mesh.submeshes {
let mtkSubmesh = submesh.mtkSubmesh
renderEncoder.drawIndexedPrimitives(type: .triangle,
indexCount: mtkSubmesh.indexCount,
indexType: mtkSubmesh.indexType,
indexBuffer: mtkSubmesh.indexBuffer.buffer,
indexBufferOffset: mtkSubmesh.indexBuffer.offset)
}
}
mtkMesh が良い感じに効いていると思うのだが、なんらかの事情でこれが使えない場合はどうするのか???
たまにはリアル勉強会にも参加しよう
・・・などと Metal 関係については、たいそう歯切れ悪く書いていたが、現在は、いくらか改善された。
というのはたまたま参加した iOS/MacOS の勉強会で、軽くレクチャーを受けたらこの分野の理解がかなり深まったから。
それまでは、これまで同様、ある程度理解した後に、サンプル作成して理解を深めようと思っていたのだが、こと、この分野に関してはそれでは効率的でないようだ。
画像処理、特に 3DCG の領域では、プログラミング的な能力より、数理的な理論の理解の方が重要なので、理解度が足踏みしていると感じたら、分かっている人に聞くのも一つの手でしょう。