トップページ > 記事閲覧
MakeScreenで作った画面の初期化
名前:spaaaark・∀・ 日時: 2013/07/06 23:46

初めて掲示板のほうを利用させていただきます、spaaaark・∀・と申します。 今回、ある実行結果を描画した結果を様々な大きさで表示させるために、 αチャンネルを含んだMakeScreen関数を使用し、それを裏画面に描画する プログラムを組んでいるのですが、その画面をループ毎に初期化、 つまり元の何も描かれてない画面にリセットしたいのです。 いちいちDeleteGraph関数およびMakeScreen関数を呼び出すのは、 非常に遅い処理になってしまうので避けたいのですが、 どなたかいい方法を知っておられませんでしょうか? よろしくお願いします。
メンテ

Page: 1 | 2 |

Re: MakeScreenで作った画面の初期化 ( No.1 )
名前:鈴見咲君高 日時:2013/07/07 10:54

FillGraph というのがなぜか隠し関数のままだったりしますね。 使い方は DxLib.h に書いてある通りで、引数 Alpha を 0 に すれば透明度を含めた初期化ができるはずです。 肝腎の実行速度は調べたことがありませんが、解放→再確保の 手続きがない分確実に速いことでしょう。たぶん。
メンテ
Re: MakeScreenで作った画面の初期化 ( No.2 )
名前:spaaaark・∀・ 日時:2013/07/07 13:59

>鈴見咲君高様 ご回答ありがとうございます。 実行して見たところ、どうしても透明度を0にしても 前3つの引数で指定する色が画面に残ってしまう結果と なりました…。どうも完全に透明化することはできない ようです。なお、実行速度のほうはかなり速かったです。
メンテ
Re: MakeScreenで作った画面の初期化 ( No.3 )
名前:鈴見咲君高 日時:2013/07/07 16:51

多分次のどちらかです。おそらく 1) 。 1) 他の三成分も 0 にして FillGraph( ハンドル, 0, 0, 0, 0 ); が正解。 2) 他の三成分を 0 にしなかった理由を書いて次の回答を待つ。 1) の場合、そもそもの画像処理が、単に透明なだけではなく 「透明かつ三原色成分が 0 」であることが条件だったということです。 MakeScreen 直後の初期状態と FillGraph( ハンドル, 0, 0, 0, 0 ); の 処理結果はおそらく完全一致です。
メンテ
Re: MakeScreenで作った画面の初期化 ( No.4 )
名前:spaaaark・∀・ 日時:2013/07/07 17:14

>鈴見咲君高様 すいません語弊がありました…。 3要素の色をすべて0にした際も、同様の事、 つまり、描画する画像が黒っぽく表示されて しまうのです…。説明下手で申し訳ないです。
メンテ
Re: MakeScreenで作った画面の初期化 ( No.5 )
名前:Sura 日時:2013/07/07 18:03

横やり失礼します。 要するに、リフレッシュレート毎に実行時にMakeScreen()で作成したグラフィックハンドルを初期化した時、 全領域透過色で埋めることと思いますが (つまり、作成したグラフィックハンドルをDX_SCREEN_BACK時にDrawGraph()をしても何も表示されない状態)、 私の場合、SetDrawBlendMode()にてDX_BLENDMODE_SRCCOLORを指定した後、 DrawBox() GetColor(0,0,0)で塗りつぶして再現できたと思います。 例) SetDrawScreen(iHandle); SetDrawBlendMode(DX_BLENDMODE_SRCCOLOR, 0); DrawBox(_x1, _y1, _x2, _y2, 0, TRUE); SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255); //何か描画したいものを描画 SetDrawScreen(DX_SCREEN_BACK);
メンテ

Page: 1 | 2 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存