Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
gcc 4.7.2
DXライブラリ(MinGW用)
Ver3.11
Ver3.11a (圧縮ファイルのMD5:B3500C93DD829D2643852093F15C113C)
シェーダーを用いて画像処理を行うプログラムと、
画像処理をせずに普通に描画するプログラムの速さの比較をしようとしました。
後者のプログラムを実装するために、
vert[0].pos=ConvScreenPosToWorldPos(VGet(0.0f,0.0f,0.1f));
のような感じで描画するポリゴンの頂点座標を得ようとすると、
計測した時間が変な値になり、メモリが破壊されているようでした。
さらに、終了時に強制終了しました。
VGetを引数に入れたのが悪いのかと思い、
VECTOR GetWorldPosFromScreenPos(float x,float y,float z) {
VECTOR screenPos=VGet(x,y,z);
return ConvScreenPosToWorldPos(screenPos);
}
という関数を定義して上の文の代わりに用いたところ、計測した時間も表示されずに強制終了しました。
VGetのみを使用してposの値を設定したところ、画像は描画されませんでしたが、
強制終了することなく実行することができました。(おそらく設定した座標が適当すぎるから?)
この現象は、DXライブラリ、gcc、自分のプログラムのどれの不都合だと考えられるでしょうか?
プロジェクト一式(画像は入っていません、512x512の24ビットBMPを用意してください)
h t t p : //gigafileupload.com/file/06595760760553925.zip