为什么更改 'camera' 的 Z 位置不会显示图元?
Why changing the Z position of the 'camera' won't show the primitive?
我有一个未转换的结构,其顶点坐标将形成一个三角形:
struct utVertex ut_Vertex[] =
{
{ 2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(0, 0, 255), }, //a
{ 0.0f, 3.0f, 0.0f, D3DCOLOR_XRGB(0, 255, 0), }, //b
{ -2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(255, 0, 0), },//c
};
上图应该(不确定,因为z轴可以倒转,+也许应该在-所在的位置)根据我的代码是正确的:
D3DXMatrixLookAtLH(&matView,
&D3DXVECTOR3(0.0f, 0.0f, 10.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
d3dDevice->SetTransform(D3DTS_VIEW, &matView);
上图中的蓝点应该是根据这段代码的相机位置。 (如果我错了请告诉我)。
这会在屏幕上正确绘制一个三角形。
现在,如果我将相机位置更改为 -10.0f
而不是 10.0f
(我认为) 这就是相机应该位于的位置:
但它应该 仍在查看 0.0f, 0.0f, 0.0f
。
如果是,那么为什么改变 'camera' 的 Z 位置不会显示图元(三角形)?
没有显示:
您使用的多边形是单面的,因此从后面看是看不到的。要在倒转相机时显示三角形,您需要添加另一个具有相同点但在相反方向上列出的多边形 - (a,c,b) 而不是 (a,b,c) - 或在 ut_Vertex
数组中交换其中两个点。
我有一个未转换的结构,其顶点坐标将形成一个三角形:
struct utVertex ut_Vertex[] =
{
{ 2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(0, 0, 255), }, //a
{ 0.0f, 3.0f, 0.0f, D3DCOLOR_XRGB(0, 255, 0), }, //b
{ -2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(255, 0, 0), },//c
};
上图应该(不确定,因为z轴可以倒转,+也许应该在-所在的位置)根据我的代码是正确的:
D3DXMatrixLookAtLH(&matView,
&D3DXVECTOR3(0.0f, 0.0f, 10.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
d3dDevice->SetTransform(D3DTS_VIEW, &matView);
上图中的蓝点应该是根据这段代码的相机位置。 (如果我错了请告诉我)。
这会在屏幕上正确绘制一个三角形。
现在,如果我将相机位置更改为 -10.0f
而不是 10.0f
(我认为) 这就是相机应该位于的位置:
但它应该 仍在查看 0.0f, 0.0f, 0.0f
。
如果是,那么为什么改变 'camera' 的 Z 位置不会显示图元(三角形)?
没有显示:
您使用的多边形是单面的,因此从后面看是看不到的。要在倒转相机时显示三角形,您需要添加另一个具有相同点但在相反方向上列出的多边形 - (a,c,b) 而不是 (a,b,c) - 或在 ut_Vertex
数组中交换其中两个点。