09/05/22 21:47:48
>>201
DXLibralyPortable 見てみた。
DrawRotaGraph() の類を使っているのだな?
リストの線形探索というとても効率の悪い GraphHandle2Ptr() を、
一枚描画するたびに何度も呼ぶことになっているが、同じ画像を
使う描画をまとめることで、実は一度だけでよいようにできる。
当然、SetTexture() も一度でよくなる。
また、sceGuGetMemory() を毎回呼び出しているが、事前に枚数が
分かっているのなら、これも一度でよい。
ついでにいうと、GuListSafety() はうんこだ。
sceGuGetMemory() の直前に必要量が足りるかを判定して、足り
ない場合に不ラッシュするようにすべきだ。
さらにいうと、この処理を見れば分かるように、パケットエリアが
足りなくなると sceGuSync() を呼ぶことになるが、これは処理速度
の観点から好ましくないので、sceGuGetMemory() 直前に、パケット
エリアが足りなければ assert() するようにした方が良いかも知れない。
メモリ効率が重要ならリングバッファに。
double は論外。
どうしても必要な場合だけにしなさい。
float <-> double の変換だけでかなりの時間を使う。
まず間違いなく、atan は無罪だ。
DrawRotaGraph() を引数を含めて最適化したほうがずっと効果が
高いだろうと思われる。
あとお前、212 のテイラー展開とか正規化で sin, cos とか無視しやがったな。
進行方向修正だけなら(九十度回転)内積だけで済むとかも。