まず、VRAM直接参照というのは、役にたつ局面は限定的です。
「pgetやpsetを何千回、何万回とやるようなコード」だったらVRAM直接参照に
置き換えた方が速いですが、大抵のケースでは、標準命令での描画の方が速いです。
(あとは、あるバッファの内容を、全く同じサイズのバッファに丸ごとコピーする処理とか)
はるさんは「明るさ調整」の処理にVRAM直接参照をやっているようですが、
私がこのスレ↓でVRAMの話題を出したのは、あくまでも「エンボス加工」での話です。
http://hsp.tv/play/pforum.php?mode=all&num=81916
VRAMを使う必要性を感じないのなら、使う必要はありません。
>透過職が255だから染まった途端に消えるという状態になってます
「透過色は透過にしか使わない」と決めて、それ以外の用途には使わないようにすれば済む話では?
>なぜgmodeは負担をかけず早いとか知りたいです
なぜgmodeの話が何回も出てくるのかよくわかりませんが、先ほどのスレで私が答えた、
「gmode 5や6としたあと、gcopyで矩形を加算コピーや減算コピーして、
明るさ調整をする」というやり方のことを言ってるのでしょうか?
はるさんはそのスレの最初のコードで、12万回以上ループしてpsetをしていましたが、
ただでさえ「遅い」pset命令を12万回もやるのに比べれば、gcopy一発の方が速いのは当然です。
>
http://hp.vector.co.jp/authors/VA015883/hsp/hna/hnafast1.html
>のdupの部分に書いてある配列参照だとか
>
http://www.hspdx.net/hspyarou/2001.html
>10の実験の一時変数に代入後参照とか
>代入と何が違うのかな、と
なぜそんな話題が唐突に出てくるのかさっぱりわからないのですが……まず上の配列参照から。
こういうコード↓を組んで実験してみたところ、確かに処理時間が倍違いましたが、
それでも私の環境で100万回ループして、やっと50ミリ秒の差が出る程度の違いでした。
実際そのサイトにも「ここで行っている高速化は実際には微々たる物です」って書いてあります。
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
dim a,6
a=0,1,2,3,4,5
st=timegettime()
repeat 1000000
b=a(3)
loop
mes timegettime()-st
dup c,a(3)
st=timegettime()
repeat 1000000
b=c
loop
mes timegettime()-st
で、次の記事ですが、記事と同様の実験をしたところ、私の環境ではカウンター(cnt)直接参照の方が速かったです。
記事自体が16年も前のHSP2時代のもので、PC-9821 Xa13という骨董品クラスのマシンでの実験ですから、
今からだとあまり参考にはならないでしょう。