トップページ > 過去ログ > 記事閲覧
MakeScreenの複製
名前:kame 日時: 2012/06/05 22:33

現在画面全体の残像が残る演出を作ろうとしていまして、これをMakeScreenで作成したイメージをSetDrawScreenで 描画先に指定して、最終的に裏画面に描画した後 int型配列にイメージを格納し、これを透明度をいじりつつ 次のフレームでまた描画していく事で実行しようとしているのですが、 イメージを配列に代入した瞬間画面が真っ暗になってしまいます。 これの原因が良くわからないのですが、ひょっとしてMakeScreenでつくったイメージは複製ができないと言う制約があるのでしょうか?またその場合 抜け道のようなものはありませんでしょうか?

Page: 1 |

Re: MakeScreenの複製 ( No.1 )
名前:いっち 日時:2012/06/06 21:34

> これの原因が良くわからないのですが、ひょっとしてMakeScreenでつくったイメージは複製ができないと言う制約があるのでしょうか? ありません。 あるテクスチャに対してあるテクスチャを描画するというのが複製と同義なので出来ないということはありえません。 (MakeScreenの存在意義がなくなってしまいます)
Re: MakeScreenの複製 ( No.2 )
名前:管理人 日時:2012/06/10 18:05

グラフィックハンドルの「複製」をするための機能はDXライブラリには特に用意していないのですが、 複製には具体的にどのようなことをされているのでしょうか?
Re: MakeScreenの複製 ( No.3 )
名前:ar 日時:2012/06/14 09:06

便乗で申し訳ないのですが関連した要望ですのでこちらによろしいでしょうか。 私もシェーダーを使ったエフェクトや影生成等の過程で描画結果を別の描画可能領域へ複製の為、描画先を変更して複製と言った事をしていますが 3Dを使った描画の場合、描画先の切り替えを行うと、カメラの再セット等手間が増えてしまうので (過程を分岐させる為の描画状況を保管する様な目的での複製の場合更に元の描画先に戻す必要があるので特に) MV1DuplicateModelの様な複製関数があると助かります。
Re: MakeScreenの複製 ( No.4 )
名前:管理人 日時:2012/06/18 00:19

複製ハンドルを作成する機能は、VRAMの確保と転送が発生してあまり実用的ではないと思いましたので、 MakeScreen で予め転送先の画像を作成しておいた上で、描画結果をただ転送するだけの機能を追加しました 内容としては GetDrawScreen の取り込む対象を引数で指定できるようにした関数です よろしければこちらをダウンロードしてください http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) 追加した関数はこちらの関数です // 描画可能画像から指定領域のグラフィックを取得する // TargetDrawValidGraph : 転送元の描画可能画像 // x1, y1, x2, y2 : 転送元の矩形の左上座標と右下座標 // DestX, DestY : 転送先の矩形の左上座標 // DestGrHandle : 転送先の画像 int BltDrawValidGraph( int TargetDrawValidGrHandle, int x1, int y1, int x2, int y2, int DestX, int DestY, int DestGrHandle ) ; TargetDrawValidGrHandle に渡すグラフィックハンドルは MakeScreen で作成したグラフィックハンドルなどの 「描画対象にできる画像」である必要がありますので注意してください また、DestGrHandle に指定するグラフィックハンドルは「描画対象にできる画像」である必要はありませんが、 転送速度は「描画対象にできる画像」である方が圧倒的に高速です よろしければお使いください m(_ _)m
Re: MakeScreenの複製 ( No.5 )
名前:ar 日時:2012/06/18 09:02

対応に感謝します<(_ _)> 手数おかけしてすみません、助かりました。 追加された内容を試してみようと思います。

Page: 1 |