トップページ > 過去ログ > 記事閲覧
フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう
名前:minato 日時: 2010/03/26 03:12

タイトルの通りです。 フルスクリーンモードの状態からAlt + TABでデスクトップを表示し、再度ゲーム画面を戻したときに、画面に表示されているもの全てにDX_DRAWMODE_NEARESTが適用されてしまう(そのように見える)状況に悩まされています。 SetRestoreGraphCallbackを用いて SetDrawMode( DX_DRAWMODE_BILINEAR ); を自動実行されるようにしてみましたが、効果はありませんでした。 また、3Dモデルに設定されているテクスチャまで、モデルファイルの設定を無視して全てDX_DRAWMODE_NEARESTで描画されているように見えます。 これらを解決方法はありますでしょうか?ご教授をお願いいたします。

Page: 1 |

Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.1 )
名前:管理人 日時:2010/03/29 06:43

こちらでも現象を確認しました すいません、ライブラリのバグです 修正版をアップしましたので、よろしければお使いください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.2 )
名前:minato 日時:2010/03/29 18:24

素早いご対応ありがとうございます! しかしながら、今度は一部のpng画像のアルファが抜かれずに黒く表示されるようになってしまいました。 ライブラリを更新してリビルドした結果にそうなってしまったので、再度3.02をダウンロードし直してリビルドし直したところ直りましたので、やはり修正版のみの現象のようです。 (ソースコードには一切手を加えずライブラリのみを上書きしました) 画像の読込、描画にはLoadGraph、DerivationGraph、DrawBillboard3D、DrawModiBillboard3Dを使っています。 関数の使い方等が変わっているのでしょうか?
Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.3 )
名前:管理人 日時:2010/03/30 04:45

> 画像の読込、描画にはLoadGraph、DerivationGraph、DrawBillboard3D、DrawModiBillboard3Dを使っています。 > 関数の使い方等が変わっているのでしょうか? いえ、3.02から使い方が変化した関数は挙げて頂いた中にはありません 「一部のpng画像」ということは、全てが透過されなくなったわけではないのですね・・・ もし透過されない現象を簡単に再現することができるのでしたら、 よろしければ再現プログラムをこちらにお書き込み頂けないでしょうか m(_ _;m ( 手元で幾つか DrawBillbard3D で描画した限りでは全て正常に透過されました・・・ )
Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.4 )
名前:minato 日時:2010/03/30 20:44

再現プログラムを用意しようと思ったのですが、元プログラムが大規模になりすぎて原因が特定しづらく、上手く再現出来ませんでした…… しかしながら、分かったことがいくつかありましたので書き込ませていただきます。 1、LoadModelをコメントアウトしてみたところ描画が正常になった。 どうやらモデル読み込みを行うと、この不具合が発生するようです。元に戻してみたところ再発しました。 ちなみに、モデルファイルはMV1形式です。 2、モデルファイルの描画を行うかどうかは直接関係ないようだった。 描画部分をコメントアウトしても、症状は同じでした。「モデルファイルを読み込むかどうか」のみが原因のようです。 3、「一部のpng画像のアルファが抜かれずに黒く表示されるようになってしまいました」と書き込みましたが、語弊がありました。申し訳ございません…… RGB(0, 0, 0)をカラーキー(?)として自動で抜かれていたのが、黒く表示されるようになってしまった、というのが正確な現象です。 png画像のアルファチャンネルに関しては問題ございません(実際にテストしてみましたが大丈夫でした)。 そして、モデルファイルの検証を行ったことで気になったことが一つありましたので一つ追記させていただきます(本来は別スレッドを用意すべきかと思うのですが、申し訳ございません)。 メタセコイアで設定できる、「自己発光」+ 頂点カラーの頂点カラーが有効にならないということです。 吐き出したmqo形式をDxLibModelViewerで読み込むと、頂点カラーが上手く有効になっていないことから気がつきました。ちなみに「反射光」では上手くいきます。 DXライブラリではライティング計算において頂点カラーを有効にすることはできますが、これはライトに依存しているということなのでしょうか? 周りの光の影響を受けずに、かつ色の具合を頂点カラーで調整しようと思うとこの仕様に困ってしまいます(加算合成時に光が当たってしまうと白く飛んでしまうことなど……)。 これについて、自己発光の頂点カラー計算の対応をお願いしてもよろしいでしょうか?
Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.5 )
名前:管理人 日時:2010/04/05 01:45

すいません、検証していただいてしまったみたいで・・・ お書き込みいただいた情報でほぼ原因が特定できました、ありがとうございます 修正版をアップしましたので、何度も申し訳ありませんがよろしければお試し下さい m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 頂点カラーについてですが、DXライブラリとメタセコイアでライティング計算の仕方が違うのが 結果の違いになっているのだと思います( 更にメタセコイアは表示に Direct3D又はソフトウエアの場合と OpenGL では表示結果が違うみたいです・・・ OpenGL が一番意図した結果になっているような・・・ ) まずDXライブラリでは頂点カラーはメタセコイアで言うところの「拡散光」の代わりとして 使用するかどうかを設定で変更できます( デフォルトでは頂点カラーは無視されます ) なので、「拡散光」の設定と頂点カラーを同時に使うことはできません( これは Direct3D の固定機能パイプラインの縛りです ) そして、頂点カラーは「拡散光」の代わりなので、ライトの影響を受けます 「自己発光」の設定はDXライブラリでも独立しているので、頂点カラーを有効にしても 両立できるはずですが、これはおそらくメタセコイアとDXライブラリでの実装の違いで 意図する結果になっていないのだと思います > 周りの光の影響を受けずに、かつ色の具合を頂点カラーで調整しようと思うとこの仕様に困ってしまいます(加算合成時に光が当たってしまうと白く飛んでしまうことなど……)。 > これについて、自己発光の頂点カラー計算の対応をお願いしてもよろしいでしょうか? SetUseLighting( FALSE ) ; をモデルの描画の前に実行してライティング計算をOFFにした場合は特別な計算がされます ( というかこちらも Direct3D の固定機能パイプラインの実装そのままですが・・・ ) マテリアルの設定が一切無視されて、「頂点カラー( 0〜255 を 0.0〜1.0 として扱う )」×「テクスチャのカラー」 という単純な計算で描画されるピクセルの色が決定されます 「反射光」のような効果はできなくなりますが、これでライトの影響を一切受けないようにすることができます どうでしょう・・・これでは意図する表現はできませんでしょうか?
Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.6 )
名前:minato 日時:2010/04/06 03:10

対応ありがとうございました!修正され無事動作しているのを確認済です! 頂点カラーの件についても、大体想定しているような表現になっているのですが、マテリアルごとにライティングのON/OFFが設定できないため困っています。 そのような設定を施すことができる関数を追加してはいただけないでしょうか?要望ばかりで申し訳ございません……
Re: フルスクリーン復帰の際に画像の補間方法が自動変更されてしまう ( No.7 )
名前:管理人 日時:2010/04/19 00:31

MV1DrawMesh でメッシュ単位で描画をするようにして、メッシュ描画前に メッシュのマテリアルを確認してライティングのON/OFFをすれば、 現在のバージョンでも実現可能です マテリアル単位でライティングをON/OFFできる機能は上記の処理で 代替できますので、とりあえず保留とさせてください m(_ _)m

Page: 1 |