ドローコールが増える原因は二つ考えられます。 一つは、モデルの描画の仕様で起こります。 ドローコールは、テクスチャを切り替えるごとに一つ増えます。 Live2Dは、モデルの各描画オブジェクトを背面から順に描画していきます。 その際、パーツによっては一つ前に描画したものとその次に描画するものの テクスチャが違う場合があり、その場合はドローコールをまとめることができません。 この切り替えが多くなりすぎてドローコールが膨大になってしまうこともあります。 対処法としては、例えばテクスチャの枚数を一枚にすると、テクスチャの 切り替えがなくなるため、一度のドローコールに抑えることができます。 二つ目として、シーン内に複数のカメラが配置されていることでも発生します。 SDKでは、描画部分をOnRenderObject()から呼んでいます。 OnRenderObjectは、カメラがシーンをレンダリングした後に呼び出される関数ですが、 配置したカメラの数だけ呼び出されてしまいます。 そのため、カメラの数だけモデルの描画命令が呼び出され、ドローコールが 膨大になってしまいます。 この場合の対策は二つあります。 一つ目の対策は、モデルの描画方式をデフォルトから変更し、モデルにレイヤーを指定し、 カリングマスクを設定する方法です。 描画方式の切り替え方、レイヤーの設定の方法は、本ページ上部を参照してください。 モデルに設定したレイヤーの値で、カメラのカリングマスクを設定してください。 二つ目の対策は、OnRenderObject()とほぼ同じタイミングで呼び出される、 OnPostRender()から描画をする方法です。 OnRenderObject()と違い、OnPostRender()は、Cameraにセットされた スクリプトでのみ呼び出されるオーバーライド関数です。 この関数を記述したスクリプトを、モデルを描画したいカメラにセットし、 そこからモデルの描画を行ってください。 この方法では、UnityエディターのSceneビューにも表示されなくなります。 |