hgcaptureを使わないで同じ事をしたい。
マムシ 2013/8/9(Fri) 04:39:37|NO.56227
gcopyを多用するような描画の背景の上に、
hgimg3で描画した目的のものを貼り付けたいと考えています。
randomize
#include"hgimg3.as"
screen 0,640,480
gsel 0,-1
cls 4
hgini
addxfile m_xmodel,"snowman.x"
regobj h0,m_xmodel
setpos h0,-1.8,-1.3,0
setangr h0,32,32,32
setpos HGOBJ_CAMERA,0,0,10
screen 1,640,480,,0,0
title "screen 1"
buffer 2,640,480
//背景は適当に作っている
repeat 480
cnty=cnt
repeat 640
pos cnt,cnty
color rnd(256),rnd(256),rnd(256)
pset cnt,cnty
loop
loop
buffer 4,640,480
*main
hgdraw
hgsync 20
gosub*rotmodel
gsel 2
gosub*drawback
gsel 4
hgcapture
redraw 1
gsel 1
redraw 2
pos 0,0
gcopy 2,0,0,640,480
gmode 2
pos 0,0
gcopy 4,0,0,640,480
redraw 1
gsel 0
goto*main
*rotmodel
addang h0,absf(sin(cnt*0.05))*0.05,absf(cos(cnt*0.05))*0.05,0.05
return
*drawback
gmode 0
pos 0,0
gcopy 2,0,0,640,480
pos rnd(640),rnd(480)
gcopy 2,0,0,640,480
return
※snowman.xは「いなえの鉛筆」様のものを利用。
ただし、snowman.xでなくともどんなxファイルであっても良い
http://www.geocities.jp/inaeggmon/hgimg3/01-02.html
これで一応実行はできているのですが、
現状のところ、裏にhgini処理画面を作り、hgcaptureを使って別のbufferに取り置き、
そこから改めてコピーする手法をとっています。
しかし、hgcaptureは負荷が大きいとあったため、
いざ実際に使ってみようと思うと処理落ちが気になります。
そのため、代替手段はないか模索しているところです。
譲れない点としては
・hgsyncによる待ち時間を増やして対応するのはなし
・背景bufferを作るのはgcopyによる作業
の2点です。
ご回答よろしくお願いします。
KA 2013/8/9(Fri) 05:15:40|NO.56228
>>しかし、hgcaptureは負荷が大きいとあったため、
>>いざ実際に使ってみようと思うと処理落ちが気になります。
使う前から負荷を気にするのなら、最高スペックのパソコンを使いましょう。
暇人 2013/8/9(Fri) 07:37:40|NO.56230
HSP標準命令とHGIMG3同時使用可能ですか?
http://hsp.tv/play/pforum.php?mode=pastwch&num=53162
のNO.53363にhgcaptureの軽い版hgcapture2のモジュールがある
でもエアロ有効のVistaだと重いかもしれない・・・
NO.56227のだとCPU使用率25%以上のがhgcapture2だと15%ぐらいになる
このモジュールはデスクトップが32ビット色用なのと
フルスクリーンからタスクを他に移した時の処理はしてない(今回の場合関係ないけど)
あっちのスレで
>機能追加してデバイスロストにも対応させたやつを
>そのうち書き込むかも・・・
デスクトップの色数気にしないで良いようにも出来たけど
他のモジュールも作ってて遅れてる・・・
>代替手段はないか模索しているところです。
逆にHGIMG3の画面をメインにして背景bufferをテクスチャにする
試してないからhgcapture2とどっちが早いかは分からない
2013/8/9(Fri) 07:43:10|NO.56231
> KA(NO.56228)
> 使う前から負荷を気にするのなら…
「これで一応実行はできているのですが、
現状のところ、裏にhgini処理画面を作り、hgcaptureを使って別のbufferに取り置き、
そこから改めてコピーする手法をとっています。」
暇人 2013/8/9(Fri) 20:49:47|NO.56249
>逆にHGIMG3の画面をメインにして背景bufferをテクスチャにする
これをやってみた
自分の環境じゃ5〜10%でhgcapture2より軽い
#include"hgimg3.as"
randomize
screen 0,640,480
cls 4
hgini
addxfile m_xmodel,"snowman.x"
regobj h0,m_xmodel
setpos h0,-1.8,-1.3,0
setangr h0,32,32,32
setpos HGOBJ_CAMERA,0,0,10
//背景用テクスチャID取得(2の累乗以外でもテクチャにするために使用したいサイズの画像ファイルを一度texload2でテクスチャ化)
texload2 dir_exe+"\\sample\\hspdx\\hspdx.bmp",640,480//グラボ側の制限で2の累乗しか使えない場合の動作は不明(拡大されるか、settexでエラー出るか)
tex_id=stat //背景用テクチャID取得
buffer 1,640,480,,0,0 //HSP背景用バッファ
buffer 2,640,480
//背景は適当に作っている
repeat 480
cnty=cnt
repeat 640
pos cnt,cnty
color rnd(256),rnd(256),rnd(256)
pset cnt,cnty
loop
loop
clstex tex_id //背景用テクスチャテクスチャをHspimg3の背景に設定
*main
gosub*rotmodel
gsel 1
gosub*drawback
settex 640,480,0,tex_id ////HSP背景用バッファを背景用テクスチャにコピー
gsel 0
hgdraw
hgsync 20
goto*main
*rotmodel
addang h0,absf(sin(cnt*0.05))*0.05,absf(cos(cnt*0.05))*0.05,0.05
return
*drawback
gmode 0
pos 0,0
gcopy 2,0,0,640,480
pos rnd(640),rnd(480)
gcopy 2,0,0,640,480
return
マムシ 2013/8/9(Fri) 23:29:48|NO.56252
ご回答ありがとうございます。
2つ目のやつで試してみましたが、2の累乗でないといけない的な
制限のせいかうまくいかないようですので、hgcapture2を試してみようと思います。
明日は早いので、まだhgcapture2は試してませんが、解決印は押しておきます。
暇人 2013/8/9(Fri) 23:52:22|NO.56254
>制限のせいかうまくいかないようですので、
どんな風になりました?
2の累乗制限なら一応対処は可能
640*480のテクスチャよりは負荷は増えるだろうけど・・・
暇人 2013/8/10(Sat) 00:51:42|NO.56259
あ、2の累乗制限でひっかってるならhgcapture2は使えない(CreateTextureでエラーが出るはず)
もしhgcapture2が使えるならNO.56249のは他の原因でうまく行かなかった事に・・・