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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0407
HiryuVRAMの構造3解決


Hiryu

リンク

2006/4/7(Fri) 12:43:25|NO.286

画像を高速にフィルターをかけるような事をしたいと考えています。
psetとpgetでは遅いと言う事なのでVRAMを使用することにしました。
mrefにより指定した変数がウィンドウと連動する事までは分かりました。
ただ、ヘルプには「配列変数になります」と書いてありpeekかpokeでいじるようですが、
VRAMの構造が分からないといじれないと言う事で質問させていただきます。
親切な方、厚かった事のある方、よろしくお願います。



この記事に返信する


あげなす

リンク

2006/4/7(Fri) 15:56:10|NO.290

VRAMは右下からB,G,Rと始まります。
1Dotはそれぞれの色1Byteずつで3Byteとなっているので、
1Dot単位で操りたいときは3Byteずらしていくとうまくいきます。

下のテストスクリプトも参考に。


sdim buf,6400 buf="32*32を塗りつぶしています。\n" mesbox buf,640,480,0 screen 2,32,32 mref VRAM,66 color 63,127,255 : boxf 0,0,32,8 color 255,255,255 : boxf 0,8,32,16 color 123,223,323 : boxf 0,16,32,24 color 10,20,30 : boxf 0,24,32,32 repeat 32*32*3 if (cnt\3)=0 : buf=buf+"\n" buf=buf+peek (VRAM,cnt)+" " loop gsel 0,0 objprm 0,""+buf



Shinya

リンク

2006/4/7(Fri) 16:21:00|NO.291

 「VRAMとは何ぞや」、ということは、「HSPからのDLL呼び出し方法リファレンスマニュアル」を
読んでいただければよいと思います。
 もし、何かあれば協力します。

 ↓のスクリプトはフルカラーモードのみ対応の、フェードアウトサンプルです。

////////////////////////////////////////////// // USE VRAM SAMPLE ////////////////////////////////////////////// #module #deffunc fade_out array VRAM,int prm if prm > 255 :return "2番目の引数の値が異常です" :end ; フェードアウトする値が 1byte 以上ならエラー wx = ginfo_winx * 3 ; 幅 * [RGB byteサイズ] を代入 // wx が4の倍数でなければダミーを加える if wx & 0x00000003 : wx = wx & 0x0ffffffc | 4 bSize = wx * ginfo_winy // ビットマップデータのサイズ分繰り返す repeat bSize a = peek(VRAM,cnt) a - prm if a < 0 : a=0 poke VRAM,cnt,a loop return #global color 255,200,150 boxf 50,50,100,100 color 150,200,255 boxf 150,150,200,200 color 0,0,0 mes "フェードアウトします。" wait 10 mref VRAM,66 out = 15 repeat 255/out redraw 0 fade_out VRAM,out redraw 1 await loop end

 ↑かなり遅いですね...。
HSPでVRAMを直接書き換えるのは、ちょっと荷が重いかもしれません。



Hiryu

リンク

2006/4/10(Mon) 15:45:51|NO.346

すみません。
遅れました。ありがとうございます。



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