2012-01-12 8 views
0

私は2台のマシンでこの問題を抱えていました。ほとんどの場合ラップトップと私は通常、ID3DXLineを使用するとIntelグラフィックスチップセットを搭載していると思います。ID3DXLineが特定のマシンで線幅が1.0のときの異常な動作

MyLine->SetWidth(MyLineThickness); 
MyLine->SetPattern(MyLinePattern); 
MyLine->Begin(); 
{ 
    ... Draw some lines with ->MyLine->Draw 
}    
MyLine->End(); 

マイラインはCComPtr(ID3DXLine)された状態で:

私は漠然とこのようになりますいくつかのコードを持っています。 MyLineThicknessが1.0の場合、これらのマシンは太い線を描きます(フェルトペンで描かれているかのように見えます)。 MyLineThicknessを1.1または1.5に変更すると、細い線が得られます。明らかにそれを約8.fに上げると、私は再び太い線になります。

ID3DXLineは、厚さが1.0の場合、実際には奇妙なことをしているようです。 < 1.fと> 1.fでは、期待通りに動作するようです!

誰かがID3DXLineの不自然さを経験しましたか?私は2010年2月のSDKとともに、D3D 9.0c btwを使用しています。

答えて

1

DX9の文書によると、厚さ1.0fの線は、ネイティブのハードウェア線描画サポートを使用して描画されます(存在する場合)。他のすべてのサイズは、一対の三角形を生成することによって描画され、頂点シェーダを介してレンダリングされます。サポートされている機能については、D3DCAPS9::LineCapsをチェックしてみてください。

ID3DXLineで遊んだ後、私はDrawPrimitivesを描画することに決めました。おそらく少し遅くなりますが、少なくともあなたはどのシステムでも同じ結果を得ます。

+0

しかし、それは奇妙です。私はそれが可能ならば幅1のハードウェアキャップを使用していると言います。おそらく利用できない場合、クワッドの描画に戻ります。それでも、幅1の線は幅1でなければなりません! – Robinson

関連する問題