wrongwrongな開発日記

しんまいさんの忘備録

【DxLib】透過を有効にしたDrawGraph系関数での描画がおかしくなった時確認すること【.Net】

遭遇した問題への備忘録です。

対処法

DxLibDotNet(@VB)ではDX.TRUEとTrueは等価ではないので、DrawGraph系関数を含め使用時には確認が必要です。

状況

DxLibDotNetで、DrawGraph系関数で透過を有効にして画像を2枚描画しようとすると、2回目に描画=表に来る画像が、1回目に描画=裏の画像と同じデータで描画されるという状況が発生しました。
つまり、2種類の画像を描画しているはずなのに、1種類の画像が2度描画されるという状況になっていました。

原因

上に書いた通り、VBではDX.TRUEとTrueは等価ではありません。描画関数ではDX.TRUEを指定すべきところ、Trueを指定していたためにこのような症状が発生したようです。
DX.FalseとFalseは等価のようで、使い分けのミスに気付くのが遅れました。

余談

知り合いの方に『DXライブラリは今では古いC系言語に合わせて設計されたもので、当時と今とで定数値は同じ用語が使われていても違う場合があり、特に「True」は中の値が異なることが多い。Falseはほぼ確実に0が入るため、そういった環境ではTrueよりFalseで比較をした方が安全だ』ということを教えていただきました。気を付けます。