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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0809
マムシhgcaptureを使わないで同じ事をしたい。7解決


マムシ

リンク

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のは他の原因でうまく行かなかった事に・・・



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