3D処理作成中 その3

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

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

(約3時間経過)

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

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

ダウンロード (DemoBoard用)

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。