トップページ > 過去ログ > 記事閲覧
DerivationGraphの挙動について
名前:SmokingWOLF 日時: 2013/02/10 17:56

いつもDXライブラリにお世話になっております。 DXライブラリ3.10aのDerivationGraphの挙動が、DrawRectGraphと 異なる点を確認いたしましたのでご報告させていただきます。 再現できた状況は以下の通りです。 1.OSはWindowsXP SP3  グラフィック Mobile Intel(R) 945 Express Chipset Family(最大テクスチャサイズ 幅:2048 高さ:2048) 2.3D機能を使用(3D機能をオフにした場合は再現できませんでした) 3.DrawRectGraphを使用して、画像の縦2048ピクセル前後を基点として描画 4.DerivationGraphで「3」と同じ部分の画像を分割し、  得られたハンドルを使用して描画 すると、「3」の処理では期待通りに描画されたのに対し、 「4」の処理では2048ピクセル以上を基点にした部分について、 以下の画像のように想定とは違う部分が描画されました。 ttp://silversecond.com/tmp/DxLib_result.png ※画像の左4つが「3」の処理で描画された、画像の縦2047、2048、2049、2050pxを基点とした部分。  右の4つが、「4」の処理で同じ部分を描画したものです。  想定通りなら左右同じ画像が表示されるはずですが、  右側の上から2番目以降、縦2048px以降(最大テクスチャサイズ以上?)を基点とした部分が、  左側と異なることが分かると思います。  (右は、本来の位置から2048ピクセルだけ上の部分の画像を描画している印象です) <再現環境で得られたLog.txt> ttp://silversecond.com/tmp/Log.txt <再現に使用した画像(128x3984)> ttp://silversecond.com/tmp/SampleChip.png <再現に使用したソース> #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SetOutApplicationLogValidFlag(1); // ログを出力 ChangeWindowMode(TRUE) ; // ウィンドウモード if( DxLib_Init() == -1 ){ return -1;} // DXライブラリ初期化処理 int handle = LoadGraph("SampleChip.png"); // 画面の左に、画像の縦2048px付近を基点に描画 DrawRectGraph(50,10, 0, 2047, 128, 100, handle ,TRUE, FALSE); DrawRectGraph(55,130, 0, 2048, 128, 100, handle ,TRUE, FALSE); DrawRectGraph(60,250, 0, 2049, 128, 100, handle ,TRUE, FALSE); DrawRectGraph(65,370, 0, 2050, 128, 100, handle ,TRUE, FALSE); // 画面の右に、同じ画像をDerivationGraphでハンドルを作って描画 int subHandleA = DerivationGraph( 0, 2047, 128, 100, handle ); int subHandleB = DerivationGraph( 0, 2048, 128, 100, handle ); int subHandleC = DerivationGraph( 0, 2049, 128, 100, handle ); int subHandleD = DerivationGraph( 0, 2050, 128, 100, handle ); DrawGraph(350,10, subHandleA ,TRUE); DrawGraph(355,130, subHandleB ,TRUE); DrawGraph(360,250, subHandleC ,TRUE); DrawGraph(365,370, subHandleD ,TRUE); WaitKey();// キー待ち DxLib_End() ;// DXライブラリ使用の終了処理 return 0 ;// ソフトの終了 } ---------- 環境に依存する上、かなり古いPCでしか再現しない気もするのですが、 よろしければご確認いただけますと幸いです。

Page: 1 |

Re: DerivationGraphの挙動について ( No.1 )
名前:管理人 日時:2013/02/12 00:18

ご報告ありがとうございます、私の環境でも最大テクスチャサイズを 強制的に2048とすることで載せて頂いた現象を確認することができました 少し前に描画処理を高速化したのですが、その際に行った変更でバグが発生してしまっていました ( 発生条件は「最大テクスチャサイズを超える領域を DerivationGraph で派生させたものを 描画関数で使用する」でした ) 修正版をアップしましたので、よろしければお使いください m(_ _;m 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/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
Re: DerivationGraphの挙動について ( No.2 )
名前:SmokingWOLF(解決) 日時:2013/02/12 19:57

いただいたデータを導入したところ、こちらの環境でも問題が解消されたことを確認いたしました。 早々のご対応、誠にありがとうございました。

Page: 1 |