トップページ > 過去ログ > 記事閲覧
DrawExtendGraph()内(?)でゼロ除算
名前:hael 日時: 2009/05/05 01:05

こんにちは、スクロール描画の件では対応ありがとうございました。 haelです。 立て続けに申し訳ないのですが、DrawExtendedGraph()についてお聞きしたいことがあります。 1280x720で作成したウィンドウ全体に、1024x768のJPG画像を表示しようとしています。 この画像をLoadGraph()で読み込み、DrawExtendGraph(0, 0, 1280, 720, graphId, FALSE)で描画したところ、 ちょうどこのDrawExtendGraph()の行でゼロ除算エラーが起きてしました。 DxLibのコードを見ると拡大率の計算で除算をしており、 元画像の読み込みに失敗してサイズがゼロになってしまっているのかと思ったのですが、 読み込み後のgraphIdは134676484になっており、読み込み自体は成功しているように見えます。 試しにウィンドウサイズを640x360にしてDrawExtendGraph(0, 0, 640, 360, graphId, FALSE)すると、 うまくウィンドウ全体に描画することができました。 DrawExtendGraph()の引数の(640,360)の部分を変更しても問題ありませんでした。 ウィンドウサイズが1280x720のままでDrawGraph(0, 0, graphId, FALSE)した場合は、 ウィンドウ左上に正常に描画することができました。 また、ウィンドウサイズが1280x720のままでDrawExtendGraph()の引数を変えた場合は、 どの大きさをDrawExtendGraph()に指定しても、この行でゼロ除算が起こってしまいました。 更にDrawModiGraph(0,0, 1280,0, 1280,720, 0,720, graphId, FALSE)に変えてみたところ、 この行でアクセス違反例外が起きてしまいました。 ウィンドウサイズを640x360にしてDrawModiGraph(0,0, 640,0, 640,360, 0,360, graphId, FALSE)では、 問題なくウィンドウ全体に描画することができました。 この場合の対処をご助言願えますでしょうか。 よろしくお願いします。

Page: 1 |

Re: DrawExtendGraph()内(?)でゼロ除算 ( No.1 )
名前:管理人 日時:2009/05/06 16:19

私の環境でも試してみましたが、0除算エラーやアクセス違反例外が発生することはありませんでした お書き込みを拝見する限りでは、0除算エラーが発生した場合は描画自体されない、または そこで処理が止まってしまうということでしょうか? とりあえず私の環境でコンパイルしてみた実行ファイルとソースをアップしてみましたので、 healさんの環境でも正常に動作するかどうか宜しければご確認になってみてください http://homepage2.nifty.com/natupaji/temp/DrawExtendGraphTest.zip
Re: DrawExtendGraph()内(?)でゼロ除算 ( No.2 )
名前:hael 日時:2009/05/09 17:37

レスありがとうございます。 原因らしきものが分かりましたので報告します。 管理人様のソースコードが私の環境でも問題なく動作したため、私のコードを比べてみたのですが、 私の方はLoadGraph()の第二引数NotUse3DFlagにTRUEを設定していました。 5日の報告時点ではこのことを忘れてしまっていました。。申し訳ありません。 NotUse3DFlagがFALSEの時は私のコードでも描画されましたが、 これがTRUEの時はゼロ除算やアクセス違反が起こりました。 この時点でプログラムが不正終了し、描画自体も起こりません。 もしかしてこれはグラボかドライバ側の問題である可能性が高いのでしょうか? これと関係があるかどうかは分かりませんが、SetUseVramFlag(TRUE);も設定しています。
Re: DrawExtendGraph()内(?)でゼロ除算 ( No.3 )
名前:管理人 日時:2009/05/14 00:41

ご情報有難うございます 私の環境でも NotUse3DFlag を TRUE にすると正常に動作しませんでした 修正版をアップしましたので、宜しければお使い下さい http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) ただ、拡大して描画するのでしたら NorUse3DFlag を TRUE にすると 著しく描画速度が低下しますのであまりお勧めできません もし不都合が無いのでしたら NotUse3DFlag はデフォルト値である FALSE のままでお使い下さい m(_ _)m
Re: DrawExtendGraph()内(?)でゼロ除算 ( No.4 )
名前:hael 日時:2009/05/18 23:57

対応ありがとうございます。 NotUse3DFlagはライブラリのコードを最後まで追わずに使っていたので、仰る通りFALSEのままで使うことにします。

Page: 1 |