HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0622
@keycellput3解決


@key

リンク

2012/6/22(Fri) 16:35:57|NO.47334

layerとspatは二次元配列
#deffunc spput int _p1,int _p2,int _p3,int _p4,int _p5,int _p6
;layerのint _p1,int _p2にspatの_p3,_p4から_p5,_p6の大きさをコピー repeat _p5 X=cnt repeat _p6 Y=cnt layer(_p1+X,_p2+Y)=spat(X+_p3,Y+_p4) loop loop return
について、

spput 0,0,10,10,32,32
とすると、layer(0,0)〜layer(32,32)にspat(10,10)〜spat(42,42)の値がコピーされます
ちゃんと動きますが、これを毎回5回以上実行すると処理落ちがひどくなってしまいます
もっと処理が軽くなる方法はありませんか?

boxfやcellputは同じような処理ですが大量に実行しても重くなりませんよね。
そのようなプログラムが組みたいです
少なくとも50回は実行しても重くならないプログラムが必要です



この記事に返信する


@key

リンク

2012/6/22(Fri) 18:42:16|NO.47336

ちょっと考えたんですが、memcpyという命令を使えば一定の範囲の値を一気にコピーできませんか?
詳しいかたはHSPの二次元配列のbyte構造を教えてください



暇人

リンク

2012/6/22(Fri) 22:17:11|NO.47340


#deffunc spput int _p1,int _p2,int _p3,int _p4,int _p5,int _p6 xbyte=_p5*4 repeat _p6 memcpy layer(_p1,_p2+cnt),spat(_p3,_p4+cnt),xbyte loop return

>二次元配列のbyte構造
次元関係なく連続したメモリ(文字列型は別)



@key

リンク

2012/6/23(Sat) 16:05:20|NO.47343

ありがとうございます!
100倍くらい早くなっています!
ありがとうございました



ONION software Copyright 1997-2021(c) All rights reserved.