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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0604
肥後もっこすhsp3dish使用時におけるgzoomの挙動に関しての質問7解決


肥後もっこす

リンク

2022/6/4(Sat) 02:30:21|NO.96553

gzoomで表示画像サイズをマイナスにすると画像が反転し、
posで指定した座標から見て、マイナス方向に画像が表示されます。
hsp3dishを使用した際は、画像は反転しますが、
posで指定した座標から見て、プラス方向に画像が表示されました。

この挙動はhsp3dishの仕様なのでしょうか。
検索をしたのですが、答えにたどり着く事ができずこのままプログラムに
組み込んでしまっていいのか悩んでいます。
ご教授のほど、よろしくお願いします。



この記事に返信する


Drip

リンク

2022/6/6(Mon) 23:13:43|NO.96581

肥後もっこすさん

こんにちは。Dripです。
その動作は仕様というかバグかと思います。
HSPが修正されるまでの間、以下のようにgzoomの動作を修正するスクリプトを噛ませて凌ぐと良いかと思います。
HSPが修正されたら#ifdef内のスクリプトを削除することでgzoomの動作はプログラム全体でHSP本来の動作に戻ります。
この修正スクリプトは#ifdefで動作を切り替えていますので、HSP3Dishが読み込まれている間しか機能しません。
もしDishと標準HSP互換のプログラムを組んでいる場合でも同じ動作結果になるかと思います。

#include "hsp3dish.as" //この行をコメントアウトしても描画結果は標準版と同じです。 #ifdef _HSP3DISH //Dishのgzoomの動作を標準動作と合わせるマクロを登録 #undef gzoom #define gzoom(%1,%2,%3,%4,%5,%6,%7=0) gzoomDish %1,%2,%3,%4,%5,%6,%7 #module #deffunc gzoomDish int zx,int zy,int id,int px,int py,int sx,int sy,int mode if zx<0:pos ginfo_cx+zx gzoom@HSP zx,zy,id,px,py,sx,sy,mode return #global #endif //動作テスト buffer 3:picload dir_exe+"\\hsptv\\hsptv_img.png" gsel 0 redraw 0 gmode 2 //ところで、Dishの場合gzoomはgmodeが効いてしまう。(仕様??) pos 100,50:gzoom 96,96,3,0,320,64,64 pos 100,150:gzoom -96,96,3,0,320,64,64 color 255:line 0,50,ginfo_winx,50 color 255:line 100,0,100,ginfo_winy redraw 1

問題を修正してもらうためにHSP3.7βテストのスレッドに報告したほうが良いかもしれません。

ところで、Dish利用時はgzoomではなくcelput命令を利用すればgzoomよりも美しいズームが可能です。
(ピクセルではなく実数での倍率指定によりアンチエイリアスを用いた滑らかなズームになり、gmodeの動作も標準版とある程度互換が取れます。)
celputのようにグリッドに縛られない描画をしたい場合はgrotate命令でも反転描画が可能です。
これらの利用もご検討ください。



肥後もっこす

リンク

2022/6/7(Tue) 21:08:57|NO.96595

Dripさん
ご返答ありがとうございます。

仕様に記述が無いということはやはり不具合かもしれませんね。
報告に行こうとおもいます。

スクリプト作成ありがとうございます、とても助かります。
記述内のmode 2の挙動は確かにコレもマニュアルに記述のない動作ですね。

celputは使った事が無かったのですが、これは記述が簡略化する事ができて良いものですね。
使う画像によってはこちらも有効活用していこうと思います。

しかしこのバグ実はゲームキャラを反転させるのに使いたかったので
反転時の座標設定しなくても良いのはちょっと便利かなとは思ったりもしました。



zrs90(5さい)

リンク

2022/6/7(Tue) 22:01:35|NO.96596

gzoom にもこのマイナス指定で反転する隠し仕様(?)
あったんですね。知りませんでした。

dish と通常のWindows版の動作が違う点が
不具合にあたるみたいですね。

実は、hsp3.6 の celput 命令にも
このマイナス指定で反転する隠し仕様(?)
こっそり存在していて
3.6のサンプルで、一つだけ使ってありました。
HDLに記述があれば、対戦格闘ゲームとかで
使われていたはずです。

ただ今年の2月頃、別件でバグ報告になりました。
3.7βで修正されているかは、確認してません。

https://hsp.tv/play/pforum.php?mode=all&num=95295



Drip

リンク

2022/6/7(Tue) 23:22:36|NO.96597

肥後もっこすさん

>しかしこのバグ実はゲームキャラを反転させるのに使いたかったので
>反転時の座標設定しなくても良いのはちょっと便利かなとは思ったりもしました。

実は標準のgzoom命令は動作が重く、もともとリアルタイムゲーム向けな命令ではありませんでした。
その分計算精度が高いため、bufferに予め高精度な拡大・反転画像を作成するのに使ったり、ツール制作等、限定的な用途で用いる場面が主流だった気がします。
Dishではより高精度な拡縮描画命令がありますから、gzoomの動作はcelputの方に合わせて互換の為に残している命令…という印象を受けます(体感です)。

反転画像の座標調整不要という意味ではgrotateは常に描画基点が画像の中心に固定されるので、もとから調整は不要かと思います。
またcelputによる反転描画もceldiv命令で画像の描画基点を指定できるため、grotateと同じく座標調整は不要になります。
一度お試しいただければと思います。


zrs90(5さい)さん

>gzoom にもこのマイナス指定で反転する隠し仕様(?)
>あったんですね。知りませんでした。

こちらはHSP2時代から共通の仕様だったかと思います。
使用シチュエーションも多く様々な環境で正常に動作しており、サンプルにも使用されているのでこっそり隠されている動作というわけではないと認識しています。
celputでもgrotateでも共通する仕様かと思います。
ただF1ヘルプのパラメータ解説はまちまちで、こちらの記述は正確にしてほしいとは思います。

>ただ今年の2月頃、別件でバグ報告になりました。
>3.7βで修正されているかは、確認してません。

バグ報告になった…とのことですが、画像の縁に周囲のドットが乗る問題がバグとして受理されたのでしょうか?
こちらの問題はHSPというより搭載しているグラフィックボードの影響を多大に受けるため、HSPに関係なく他の開発環境での開発者もたまに話題に上げている問題かと存じます。
この問題は言語側で吸収するよりも作品の製作者側の努力に委ねられている側面がある気がするのですが、バグというか仕様に近いような気がします。
その辺はどうなのでしょうか?



zrs90(5さい)

リンク

2022/6/8(Wed) 02:51:31|NO.96598

Drip さん、返信ありがとうございます。

このマイナス指定については、
現在はhdl への記述漏れ...と認識しています。

この件を、テキスト検索で確認した所
history.txt 内に3.4β1 で、Dish gzoom命令の
マイナスサイズ指定での画像反転に対応
...とありましたが、普通、ここまで調べないです。

この記述がなければ、オフラインのhsp3.6上では
このマイナス指定による反転は、全く不明です。
gzoom 命令のマイナス指定は
hdl上での説明 、サンプル等もありませんでした。

(※掲示板の投稿等を、探せばサンプル的な物は
あると思います。)


バグ報告になった件ですが、dish(win) と
通常のWin版で、動作が違うと言う事です。


●3.7β版へのバグ報告の投稿(再掲)です。
この下に、私が貼ったスレッド #95295 が
記述してありました。

2022/2/4(Fri) 00:19:28NO.95306

中途から失礼します。
別スレッドにも投稿したのですが、HSP3dishで
celput使用時、表示倍率にマイナス値を指定すると
上、左に1ドットの画像ズレが発生するようです。
(私はwindows版の3.6、3.7betaで現象確認しました)
仕様か不具合か不明ですが、他の方からも修正の
ご要望がありましたので、ご確認いただけると幸いです。
詳細は下記に記載しております。


おにたま さんからの返答は、#95311 で
返ってきてます。



Drip

リンク

2022/6/8(Wed) 19:13:58|NO.96601

zrs90(5さい)さん

ご説明有難うございます。
当該スレッド中のテクノけいさつさん報告の1ドットずれる現象は、同スレッド中のzrs90(5さい)さんの引用先の撃さん報告の問題とは無関係のものと(個人的には ありさんと同様に)認識していたのですが、それが同様の不具合(HSP側の問題である)となったのでしょうか?
スレッドを読んだ限りではそれを読み取ることができなかったのですが…
(当方の検証におきましてはcelputの反転描画の1ドットズレは環境に関係なく発生するもので、撃さん報告の拡縮時に周囲のドットを拾う現象の発生はPCの環境に大きく左右される問題ということを確認しています。)
これらが同様の問題で同時に改善されるということであれば有り難いことですが(?)……ちょっと謎です。

>...とありましたが、普通、ここまで調べないです。
>この記述がなければ、オフラインのhsp3.6上では
>このマイナス指定による反転は、全く不明です。
>hdl上での説明 、サンプル等もありませんでした。
>(※掲示板の投稿等を、探せばサンプル的な物はあると思います。)

とのことですが、そこまで自信のない項目に関しては触れない(回答しない)のも1つの誠意かと思います。
無理に調べて見つけたふわふわとした知識を関連付けることは質問者本人だけでなく、あとから掲示板を見に来た人も巻き込んで混乱させてしまいますよね。
好意によるものとは存じますが、意識していただければ幸いです。



zrs90(5さい)

リンク

2022/6/8(Wed) 23:15:21|NO.96604

実力不足は、私自身が一番知っています。
こういった形で、回答を続けていても
良くないので、今後控えます。
指摘して頂き、ありがとうございます。

また、当方の至らない回答を何度も
助けて頂き、ありがとうございました。


celput 命令に関しては、マイナスパラメータ指定の
説明と、Dish(win版) の不具合報告になった件も
記述があるスレッドだったので、このスレッドに
投稿しました。

3.7β2(6/2ver)以降〜おにたま さんの修正次第
になりますので、どうなるか私にも分かりません。
仰っている通り、この機会にまとめて
修正されると良いのですが。(後、HDLも含む。)

追記。
gzoom 、celput 等にしても、HDLの命令ヘルプ自体に
マイナス指定の記述があればなぁ...と思いました。



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