我尝试使用D3D11绘制两个顶点之间的线段。我在D3D9和D3D11上都有一些经验,但是在D3D11中绘制一条从一个像素开始到另一个像素结束的线段似乎是有问题的。
我所做的是:
是否有任何教程解释此问题或是否有人遇到了同样的问题?我记得在D3D9中没有这么困难。
如果您需要进一步的信息,请提出要求。
谢谢,Stefan
编辑:找到了d3d10的光栅化规则(应该适用于d3d11): http://msdn.microsoft.com/en-us/library/cc627092%28v=vs.85%29.aspx#Line_1 我希望这会帮助我理解...
我所做的是:
我将每个顶点的像素坐标增加了0.5f,以适应纹理/像素坐标系统(我阅读了Microsoft页面,了解了D3D9和D3D11坐标系统之间的差异):
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);
设置光栅化器状态、混合状态、视口等
- 将顶点绘制为D3D11_PRIMITIVE_TOPOLOGY_LINELIST
是否有任何教程解释此问题或是否有人遇到了同样的问题?我记得在D3D9中没有这么困难。
如果您需要进一步的信息,请提出要求。
谢谢,Stefan
编辑:找到了d3d10的光栅化规则(应该适用于d3d11): http://msdn.microsoft.com/en-us/library/cc627092%28v=vs.85%29.aspx#Line_1 我希望这会帮助我理解...