あと、ちょっと気になったんだが、環境マップテクスチャの合成を乗算でやっていないか?
近似としては、物体表面の反射率をc(0〜1)とすると、
物体表面テクスチャ * ( 1 - c ) + 環境マップテクスチャ * c
の方がエエ感じだよ。

DX7だとちょっと違うかもしれんが、例えば、物体表面テクスチャがステージ0に、
環境マップテクスチャがステージ1にセットされてるなら、

 //環境マップ合成方法を線形αブレンディングにしる。
 LPD3DDEVICE->SetTextureStageState( 1,D3DTSS_COLOROP,D3DTOP_BLENDFACTORALPHA);
 //環境マップのブレンド割合(α)を c の値にセットしる。
 LPD3DDEVICE->SetRenderState(D3DRS_TEXTUREFACTOR,D3DCOLOR_ARGB(c,255,255,255));

こんな感じだな。