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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0927
SSSShgimg3の画面のコピーができない2解決


SSSS

リンク

2021/9/27(Mon) 17:14:45|NO.93999

hgimg3の画面をリサイズして別の画面に表示したいです。

まず、buffer命令にて生成した仮想画面をhginit命令で初期化しようとすると
「Direct3Dのデバイスの生成に失敗しました。」
というエラーが表示されました。

仮想画面ではなく、
gsel命令で非表示にした通常のウィンドゥならば正常に表示できたのですが
それをgcopy命令でコピーすることはできませんでした。

以下ソースコード

#include "hgimg3.as" screen 0,640,480 title "0" screen 1,640,480 title "1" gsel 0 cls hgini addbox box,10,10 regobj model,box gsel 0,-1 *main gsel 0 hgdraw hgsync 10 gsel 1 pos 0,0 gcopy 0,0,0,640,480 goto *main

15行目のgsel命令を削除すると
ウィンドゥ 0にてhgimgの画面は正常に処理されているようでしたが
ウィンドゥ 1には本来ならば
gcopy命令にてウィンドゥ 0がコピーされるべきだったところ
何も表示されませんでした。


どうかよろしくお願いいたします。



この記事に返信する


猪野

リンク

2021/9/28(Tue) 15:02:51|NO.94004

HGIMG3は初めて触るのであまり自信はありませんが、こんな感じでどうでしょうか?


#include "hgimg3.as" *startup buffer ;title "オリジナル" hgini addbox box,10,10 regobj model,box buffer 1 ;title "原寸大コピー" screen 2 title "拡大縮小コピー" *main gosub *draw hgsync 10 goto *main *draw //オリジナル gsel 0 hgdraw //原寸大コピー gsel 1 hgcapture //拡大縮小コピー gsel 2 redraw 0 color 255,255,255 boxf pos 0,0 gzoom 320,240,1,,,640,480 redraw return

>まず、buffer命令にて生成した仮想画面をhginit命令で初期化しようとすると
>「Direct3Dのデバイスの生成に失敗しました。」
>というエラーが表示されました。

bufferで初期化しようとすると、ウィンドウIDが0以外のものはエラーが出てしまいました。
0で構わないならbufferで、それだと困る場合はscreenの画面モードにscreen_hideを追加するしかなさそうです。

また、画面のコピーにはhgcaptureという専用の命令を使うようで、gcopyやgzoomを使って直接コピーすることはできません。
そのためウィンドウを1枚増やして対応しています。



SSSS

リンク

2021/9/28(Tue) 19:44:50|NO.94009

猪野さん返信ありがとうございます。

hgcapture命令ですか...完全に見落としていました...
これで動かすことができました。
ありがとうございます。
解決しました。



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