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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0424
よっぴーdxライブラリとArtlet2Dのやり取り5解決


よっぴー

リンク

2020/4/24(Fri) 20:42:42|NO.90168

Artlet2Dで作成したイメージをDXライブラリに転送して利用する方法を知りたいです。
alSaveFileでPNG出力してDXライブラリ側でLoadGraphで画像を読み込むという方法以外でお願いします。



この記事に返信する


kanamaru

リンク

2020/4/25(Sat) 17:16:24|NO.90184

hwndをdxlibのSetUserWindowに渡せばいいのでは?
転送しているわけではないですが、
Artlet2Dとは限らずhspで描画しているウィンドウにdxlibから描画できるようにできます。
hspでdxlibを使うときによく使われる方法です。



よっぴー

リンク

2020/4/25(Sat) 22:45:05|NO.90189

HSPのウィンドウだと透過情報が維持されないので、Artlet2Dのイメージのままで転送したいです



kanamaru

リンク

2020/4/25(Sat) 23:21:49|NO.90190

あらかじめhspのウィンドウをdxlibの描画対象にしてから
alCopyImageToScreenを使えば透過情報を保持したまま描画できるはず。
描画せずにdxlibの管轄に送りたいというのであればソフトウェアイメージに
1ピクセルごとに書き込めば透過情報は失われないけど、処理が遅いと思います。
dxlib側で何をしたいのか教えてくれれば
もう少し具体的に方法を考えることができるかもしれません。



よっぴー

リンク

2020/4/26(Sun) 00:51:48|NO.90191

回答ありがとうございます

DXライブラリを使ったゲームでグラデーションを描画したかったのですが、
色々と面倒だったので(ポリゴン?)Artlet2Dで作ったイメージをDXライブラリ側に転送できればいいかなと思った次第です。
毎フレームalCopyImageToScreenをしたら重くなってしまうので
起動時に1ピクセルごとソフトウェアイメージに書き込むようにします。
処理が遅いとありましたが、意外と高速に処理されるようです(体感ですが)
テストしたときのコードも載せておきます。


#include"dxlib.as" #include"a2d.hsp" gsel 0,-1 changewindowmode 1 dxlib_init DrawBox 0,0,640,480,GetColor(0,0,255),1 dim a2dwidth:dim a2dheight a2dwidth=400:a2dheight=400 alcreateimage 0,a2dwidth,a2dheight alGradientColor 0,0,0,a2dheight,RGBA(255,0,0),RGBA(0,255,0),0 alFillRect 0,0,a2dwidth,a2dheight dim SoftImgHWND SoftImgHWND=MakeARGB8ColorSoftImage(a2dwidth,a2dheight) dim xcount:dim ycount repeat a2dwidth repeat a2dheight DrawPixelSoftImage SoftImgHWND,xcount,ycount,ARGB_R(alGetPixel(xcount,ycount)),ARGB_G(alGetPixel(xcount,ycount)),ARGB_B(alGetPixel(xcount,ycount)),ARGB_A(alGetPixel(xcount,ycount)) ycount++ loop ycount=0 xcount++ loop DrawSoftImage 0,0,SoftImgHWND dim DXimgHWND DXimgHWND=CreateGraphFromSoftImage(SoftImgHWND) DeleteSoftImage SoftImgHWND repeat processmessage if stat!0 :break wait 10 loop dxlib_end end



kanamaru

リンク

2020/4/26(Sun) 07:41:50|NO.90193

DrawSoftImageは確認用に使うことが推奨されています。
せっかくグラフィックハンドルに変換していますし、
DrawGraph使って描画しましょう。
本家dxlibの掲示板でゲームで使うには遅いと言われたのですが、
十分な速度は出ていたのか、他の処理に依存するのか。
どちらにせよ目的を達成できたようでよかったです。
一応グラデーションならdxlibの掲示板で関数作っている人がいますが、
c++で書かれていますしhspに移植するのは大変そうです。
自分でdllに組み込んでhspから呼び出すのも可能ですが、
解決したなら蛇足でしょう。



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