トップページ > 過去ログ > 記事閲覧
色の反転
名前:憂煉 日時: 2007/06/15 07:22

翁さんのスクリプトプレイヤーを参考に自分専用のスクリプトプレイヤーを制作しているのですが、ゲームによく使われる画面全体をネガのように色反転させる関数が欲しいので、可能であれば追加して下さい。 あと、ビデオメモリサイズの取得関数が自分のノートパソコンで、メニュー関係は部のパソコンで使うとフリーズします。ビデオメモリの方はオンボのグラフィックチップの気がします。こっちも出来れば対処をお願いします。

Page: 1 |

Re: 色の反転 ( No.1 )
名前:Neutron 日時:2007/06/15 09:32

>色反転 実行確認は行っていないので保証はできないのですが、 反転させたい画面をGetDrawScreanGraphで保存した後、 まず白で画面全体を塗りつぶしてから、SetDrawBlendModeで減算(SUB)にして描画を行えば、 反転効果が得られるのではないでしょうか。 ただ、環境によってGetDrawScreenGraphにやや処理時間がかかるので(数十ミリ秒)、 一瞬「引っかかり」が生じるのが難点ですが…… (元画像が全て単純合成であれば、保存せずとも描画モードを変えるだけで可能だと思います) 色の排他的論理和を出力する方法ってありましたっけ?
Re: 色の反転 ( No.2 )
名前:Aquid 日時:2007/06/16 11:57

MakeGraphで画面サイズの大きさの第三引数をTRUEにした画像に一時的に描画し、 全ての描画が終わった後にGraphLockを使用して全てのビットに全て1のビットとxorをしたところ、とても使用に耐えうる速さは出ませんでした。 SetDrawValidGraphCreateFlagを使用して、減算合成を行えば実用に耐えうる速さは出るのですが、 動作するグラフィックボードを減らしてしまうのが難点です… 横槍ながら失礼しました。
Re: 色の反転 ( No.3 )
名前:管理人 日時:2007/06/17 06:50

憂煉さん始めまして、DXライブラリの管理人です。 色反転については、Neutronさんと Aquidさんが既にご返答されていますので割愛します。 (Neutronさんへ > 色の排他的論理和を出力する方法はありません) ビデオメモリサイズを取得する関数と、メニュー関係の関数を私用するとフリーズ するという現象ですが、簡単なテストでは特に不具合を確認することが出来ませんでしたので もし宜しければフリーズ現象が発生したプログラムを、プロジェクトフォルダごと 圧縮してメールで BQE00322(アットマーク)nifty.com まで送って頂けないでしょうか?
Re: 色の反転 ( No.4 )
名前:管理人 日時:2007/06/17 07:48

すみません、Direct3D の機能で色を反転することが出来ました。 宜しければこちらのバージョンをダウンロードしてください。m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 今回 SetDrawBlendMode の第一引数に渡す定義に以下のものを追加しました。 DX_BLENDMODE_INVDESTCOLOR 描画する色の値に、描画先の色の値を反転したものを乗算するという設定です。 (この定義の場合第二引数は何も意味を成しませんが、一応255を設定しておいて下さい) この設定に変更して、画面全体を白で塗り潰すと、塗り潰された部分の色が反転します。 SetDrawBlendMode( DX_BLENDMODE_INVDESTCOLOR, 255 ); DrawBox( 0, 0, 640, 480, GetColor(255,255,255), TRUE ); Direct3D の機能を使用していますのでソフトウエアレンダリングモード では使えませんが、宜しければお使い下さい。
Re: 色の反転 ( No.5 )
名前:憂煉 日時:2007/06/17 23:27

ソースコード送らせていただきました。汚くて申し訳ありません。 色反転機能のテストにも成功しました。動画再生などにも問題なく動作します。 今までは描画可能な画面を一枚作ってそちらにすべて描画→SetDrawScreenで描画先を裏画面へ変えて…→ScreenFlipというめんどくさい事をしていて重かったので、処理の軽さに感動です。
Re: 色の反転 ( No.6 )
名前:管理人 日時:2007/06/20 10:47

憂煉さんどうも、DXライブラリの管理人です。 ソースコードを拝見致しました。 プログラムを実行したところ、私の環境では動画の読み込み(CMovieBox::set関数内)で LOGO09.AVI を LoadGraph で読み込んでいるところで止まってしまいました。 (LoadGraph関数内で呼び出している外部DLL内で止まっていたので詳細は不明です) ただ、その部分を LoadGraph の代わりに -1 を代入するコードに変更すると普通に 動作し、他には特にフリーズすることはありませんでした。 具体的にどのような操作をするとフリーズしてしまうのか教えて頂けないでしょうか?
Re: 色の反転 ( No.7 )
名前:憂煉 日時:2007/06/27 07:18

自宅の開発用PCと持ち運び用のノートでは動画の読み込みは普通にパスします。部のPCでも動画関係に問題はなさそうでした。 動画のコーデックはDivxかXvidのどちらかです。 ただ、確認可能な全てのPCでbccデバッガを使う時に動画の読み込み処理の途中でトレースできなくなるのでデバッグ時はコメントアウトしています。 コーデックの問題という可能性が否定できないので今度他の形式を試してみます。 問題の「部のPCでメニューを表示させようとするとフリーズする現象」は、シンプルにメニューだけ表示させて終了させるようなプログラムを組んでみてもフリーズしました。 明日から学期末試験なので次に詳細に分析出来るのは来週以降になりそうです。
Re: 色の反転 ( No.8 )
名前:憂煉 日時:2007/07/09 14:39

部のPCのスペックは マザー:NVIDIA製 CPU:Duron1.4GHz メモリ:256mb グラボ:RADEON9000 こんな感じです。
Re: 色の反転 ( No.9 )
名前:管理人 日時:2007/07/12 11:45

憂煉さんどうも、DXライブラリの管理人です。 動画の読み込み不具合については、コーデックやデバッガの相性の問題が大きそうですね・・・ メニューについてですが、もし宜しければ > 問題の「部のPCでメニューを表示させようとするとフリーズする現象」は、 > シンプルにメニューだけ表示させて終了させるようなプログラムを組んでみてもフリーズしました。  というお書き込み部分にある、憂煉さんが組まれた「シンプルにメニューだけ表示させて 終了するようなプログラム」をメールで BQE00322(アットマーク)nifty.com まで送って 頂けないでしょうか?m(_ _)m

Page: 1 |