我正在开发我的第一个C ++和DirectX 11项目,我目前的目标是在屏幕上绘制一个彩色三角形。这没有任何问题,效果很好。但是,有一部分我想改变,但我不知道如何。我已经尝试过寻找解决方案,但我还没有找到任何解决方案,我想原因是因为我真的不知道应该搜索什么。
目前我设置了三角形3个顶点,如下所示:
VertexPos vertices[] =
{
{ XMFLOAT3( 0.5f, 0.5f, 1.0f )},
{ XMFLOAT3( 0.5f, -0.5f, 1.0f )},
{ XMFLOAT3( -0.5f, -0.5f, 1.0f )},
}
VertexPos的定义如下:
struct VertexPos
{
XMFLOAT3 pos;
};
当前,我的顶点位置设置在-1.0F到1.0F的范围内,其中0.0F是中心。如何更改此设置,以便我可以使用“真实”坐标来定位顶点:
VertexPos vertices[] =
{
{ XMFLOAT3( 100.0f, 300.0f, 1.0f )},
{ XMFLOAT3( 200.0f, 200.0f, 1.0f )},
{ XMFLOAT3( 200.0f, 300.0f, 1.0f )},
}
答案 0 :(得分:1)
通常的方式:
XMMatrixOrthographicLH()
)更简单的方式(来自F.Luna书):
XMFLOAT3 SpriteBatch::PointToNdc(int x, int y, float z)
{
XMFLOAT3 p;
p.x = 2.0f*(float)x/mScreenWidth - 1.0f;
p.y = 1.0f - 2.0f*(float)y/mScreenHeight;
p.z = z;
return p;
}
几乎相同,但在CPU方面。当然,您也可以将此代码移动到着色器。
P.S。可能你的书/手册/教程会在稍后了解你。所以,你最好相信它并逐步流动。
快乐的编码! =)