为什么更改 '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 数组中交换其中两个点。