D3D11で2つの頂点の間に線を引こうとしました。D3D9とD3D11でいくつかの経験がありますが、D3D11では、ある特定のピクセルで始まり、別のピクセルで終わる線を描くのは問題のようです。
私がしたこと:
テクセル/ピクセル座標系に合うように、各頂点のピクセル座標に0.5fを追加しました(D3D9座標系とD3D11座標系の違いについてMicrosoftのページを読みました)。
f32 fOff = 0.5f; ColoredVertex newVertices [2] = {{D3DXVECTOR3(fStartX + fOff、fStartY + fOff、0)、vecColorRGB}、{D3DXVECTOR3(fEndX + fOff、fEndY + fOff、0)、vecColorRGB}};
レンダリングターゲットに合うように正射影行列を生成しました。
D3DXMatrixOrthoOffCenterLH(&MatrixOrthoProj、0.0f、(f32)uRTWidth、0.0f、(f32)uRTHeight、0.0f、1.0f); D3DXMatrixTranspose(&cbConstant.m_matOrthoProjection、&MatrixOrthoProj);
RasterizerState、BlendState、Viewport、..を設定します。
- 頂点をD3D11_PRIMITIVE_TOPOLOGY_LINELISTとして描画します
問題:ラインが1ピクセル短いようです。それは与えられたピクセル座標で始まり、完璧にフィットします。線の方向は正しいように見えますが、線を終了させたいピクセルはまだ色付けされていません。線が1ピクセルから短いように見えます...
この問題を説明するチュートリアルはありますか、それとも誰かが同じ問題を抱えていますか?私が覚えているように、D3D9ではそれほど難しくありませんでした。
さらに詳しい情報が必要な場合はお問い合わせください。
ありがとう、ステファン
編集:d3d10のラスタライズルールを見つけました(d3d11でも同じである必要があります):http: //msdn.microsoft.com/en-us/library/cc627092%28v=vs.85%29.aspx#Line_1
これが私が理解するのに役立つことを願っています...