> NoWestさん返信ありがとうございます。試してみましたが、やはり距離とは関係なく真っ白になってしまいます。
> SetRenderStateメソッドの第二パラメータはDWord型でしか受け取ってくれないらしく、浮動小数点のアドレスをDWordポインタにキャストしてやる必要があるそうなのですが、どうもそこでうまく行っていない気がします。
先ほどネットを流離いつつ、フォグを調べてきました。
どうやら単純にキャストするだけではうまくいかないみたいですね。
C言語でいうところの*((DOWRD*)&StartR)は実際には
Single->*Single>>*DWord->DWord
ここで>>はキャスト、->はポインタ・アドレス操作です。
無理にABに置き換えようとすれば、
(VarPtr(StartR) As *DWord)[0]
ですが、こいつは現在のABではできません。
いろいろ思案しましたが、スマートな方法が思いつかないので
下の関数を使ってみてください。
コード: 全て選択
Function SingleToDWord(Data As Single) As DWord
memcpy(VarPtr(SingleToDWord),VarPtr(Data),SizeOf(DWord))
End Function
コード: 全て選択
dx_lpD3DDEV -> SetRenderState(D3DRS_FOGSTART,SingleToDWord(StartR))
dx_lpD3DDEV -> SetRenderState(D3DRS_FOGEND,SingleToDWord(EndR) )