3D処理作成中 その3

演算をマルチコアに振り分けたことで、今度はライン描画がボトルネックになりました。
Spin スクリプトは、数の多い繰り返しは本当に苦手ですね…。

今回は、オブジェクト描画専用のアセンブラルーチンを Graphics.spin に追加し、
スクリプト側でのループを一切無くす、というアプローチで対処してみようと思います。

(約3時間経過)

Propeller アセンブラにはあまり悩まされず、無事完成。
Graphics.lineseq という、頂点データとシーケンスデータを受け取り、
複数のラインストリップ(色はストリップ毎に設定可)の描画を追加しました。
アセンブラコードが容量オーバーしたため、代わりに pix 系をコメントアウト。
これで多少複雑なプリミティブでも大丈夫。

今回のソースは以下から。3d_multicore.spin を実行してください。
CON セクションの MultiCoreTranform を false に設定すると、1コアで動作します。

ダウンロード (DemoBoard用)

コメントを残す