演算をマルチコアに振り分けたことで、今度はライン描画がボトルネックになりました。
Spin スクリプトは、数の多い繰り返しは本当に苦手ですね…。
今回は、オブジェクト描画専用のアセンブラルーチンを Graphics.spin に追加し、
スクリプト側でのループを一切無くす、というアプローチで対処してみようと思います。
(約3時間経過)
Propeller アセンブラにはあまり悩まされず、無事完成。
Graphics.lineseq という、頂点データとシーケンスデータを受け取り、
複数のラインストリップ(色はストリップ毎に設定可)の描画を追加しました。
アセンブラコードが容量オーバーしたため、代わりに pix 系をコメントアウト。
これで多少複雑なプリミティブでも大丈夫。
今回のソースは以下から。3d_multicore.spin を実行してください。
CON セクションの MultiCoreTranform を false に設定すると、1コアで動作します。
ダウンロード (DemoBoard用)