トップページ > 過去ログ > 記事閲覧
MakeScreenで描画していない部分を透明にしたい
名前:トム 日時: 2010/09/02 23:22

MakeScreenで作成した画像の書き込んでいない部分を透明にする方法があれば教えてください。 (下記のようなプログラムを実行すると、緑の円の回りが黒くなって抜けません) #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); if (DxLib_Init() == -1) { return -1; } // int Ms = MakeScreen(320, 240); SetDrawScreen(Ms); ClearDrawScreen(); DrawCircle(100, 100, 100, GetColor(0, 255, 0)); // 緑の円 int PosX = 0; int AddX = 1; SetDrawScreen(DX_SCREEN_BACK); while ( (ProcessMessage( ) == 0) && (CheckHitKey(KEY_INPUT_ESCAPE) == 0) ) { // ClearDrawScreen( ); // 移動 PosX += AddX; if (AddX >= 0) { if (PosX >= 320) { AddX *= -1; } } else { if (PosX <= 0) { AddX *= -1; } } // DrawCircle(200, 200, 200, GetColor(255, 0, 0)); // 赤円 DrawGraph(PosX, 0, Ms, FALSE); DrawFormatString(0, 0, GetColor(0, 0, 255), "緑の円の周りを透明にしたい!"); ScreenFlip(); } DxLib_End(); return 0; } よろしくお願いします。

Page: 1 |

Re: MakeScreenで描画していない部分を透明にしたい ( No.1 )
名前:いっち 日時:2010/09/03 12:28

以下のように変更すると出来ると思います。 11行目あたり > int Ms = MakeScreen(320, 240); ↓↓↓↓ SetDrawValidAlphaChannelGraphCreateFlag( TRUE ); int Ms = MakeScreen(320, 240); SetDrawValidAlphaChannelGraphCreateFlag( TRUE ); 38行目あたり > DrawGraph(PosX, 0, Ms, FALSE); ↓↓↓↓ DrawGraph(PosX, 0, Ms, TRUE);
Re: MakeScreenで描画していない部分を透明にしたい ( No.2 )
名前:いっち 日時:2010/09/03 20:04

(No.1)の記事の訂正です。 2つ目の SetDrawValidAlphaChannelGraphCreateFlag の引数は FALSE でした。 すみません。
Re: MakeScreenで描画していない部分を透明にしたい ( No.3 )
名前:トム 日時:2010/09/04 23:29

いちさん、いつもありがとうございます。問題なく動作する事を確認しました。 ■処理負荷について ユーザーがゲーム画面の上にある透明キャンバスに直接タッチして、 自由に書き込んだり消したりできる仕様を考えています。  ↑↑↑ イメージ ↑↑↑  なので、メインループに入る前にMakeScreen()関数で作った[描画可能なグラフィック]を、 メインループの中で書きかえる事になるのですが、 [描画不可能なグラフィック]に描画するのに比べ処理負荷はどれくらいでしょうか? 答えにくい質問で申し訳ありませんが、わかる範囲でお願いします。 ■2つ目の SetDrawValidAlphaChannelGraphCreateFlag()について >2つ目の SetDrawValidAlphaChannelGraphCreateFlag の引数は FALSE でした。すみません。 GetDrawValidAlphaChannelGraphCreateFlag()関数があれば、 安全のために変更前の値を覚えておいて元に戻せると思ったのですが、そのような関数が見当たりませんでした。 FALSEで問題ないと思いますので、FALSEに戻しておこうと思います。 ■MakeScreenで作成した描画可能なグラフィックの削除について MakeScreen()で作成した描画可能なグラフィック(今回ならMs)は、 DeleteGraph()でメモリ上から削除するということで間違いないでしょうか? 別のスレッドを作った方がよさそうな質問も含まれていますが、よろしくお願いします。
Re: MakeScreenで描画していない部分を透明にしたい ( No.4 )
名前:いっち 日時:2010/09/05 01:04

> ■処理負荷について 「イメージ」の矢印がなにをさしているのか分からないのですが(URLが消えている?)、 処理負荷に関しては、使用するハードウェアによるとしか言えないのではないかと思います。 (「描画可能画像の負荷をこの範囲内に収めないGPUはDirectX対応と認めない」といった要求はおそらく無いと思うので・・・あるのかな?) また、雑談&質問掲示板(ttp://hpcgi2.nifty.com/natupaji/aska.cgi)のNo.2755の記事で管理人さんが仰っていますが、 透過情報付描画可能画像は対応していないGPUの存在にも注意が必要なようです。 > ■MakeScreenで作成した描画可能なグラフィックの削除について そのとおりです。
Re: MakeScreenで描画していない部分を透明にしたい ( No.5 )
名前:トム(解決) 日時:2010/09/05 08:39

いっちさん、返答どうもありがとうございます。 解決とします。

Page: 1 |