C# 我的Direct3D场景更新不起作用。我错过了什么?

C# 我的Direct3D场景更新不起作用。我错过了什么?,c#,winforms,directx,C#,Winforms,Directx,我有一个winform,并在上面安装了direct3d以显示蓝色屏幕。 渲染正在每帧运行。 下面(以及上面的一些顶点声明)将三角形输出到屏幕。。到目前为止都很酷 public void UpdateScene() { Vector3 translation = new Vector3 { X = whatever.X, Y = whatever.Y, Z = whatever.Z }; Matrix matrix = new Matrix();

我有一个winform,并在上面安装了direct3d以显示蓝色屏幕。
渲染
正在每帧运行。 下面(以及上面的一些顶点声明)将三角形输出到屏幕。。到目前为止都很酷

    public void UpdateScene()
    {
        Vector3 translation = new Vector3 { X = whatever.X, Y = whatever.Y, Z = whatever.Z };
        Matrix matrix = new Matrix();
        matrix.Translate(translation);
        device.Transform.World = matrix;
    }


    public void Render()
    {
        if (device == null)
            return;

        //Clear the backbuffer to a blue color 
        device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0);
        //Begin the scene
        UpdateScene();
        device.BeginScene();

        // Rendering of scene objects can happen here
        device.SetStreamSource(0, vertexBuffer, 0);
        device.VertexFormat = CustomVertex.TransformedColored.Format;
        device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1);


        //End the scene
        device.EndScene();
        device.Present();
    }
cameraPosition.X Y和Z在每次传递时都会正确更新。。。你知道为什么我的物体看起来不前后移动(或者相机绕着它移动)吗

我也试过:

Vector3 translation = new Vector3 { X = whatever.X, Y = whatever.Y, Z = whatever.Z };
device.Transform.World.Translate(translation);
这是:

Vector3 translation = new Vector3 { X = whatever.X, Y = whatever.Y, Z = whatever.Z };
device.Transform.World = Matrix.Translation(translation);

我认为代码是相关的:

您最好不要用相机将三角形变换到同一位置。Direct3D变换和投影算法基于真实世界的示例,就像使用相机拍摄图像一样。想象一下,如果你把东西放在相机的同一个位置,你能捕捉到它吗?您需要在它们之间保持一定距离。

您的第二个代码段将摄影机位置组件放入了一个新的矢量3中,但您的第一个代码段具有X=cameraPosition.Z,Y=cameraPosition.Y,Z=cameraPosition.Z--这是故意的吗?谢谢,不,不是hehecan,你能用代码说明你是如何更新摄像机的吗?忽略变量名,我有一个模型,现在叫做摄像机位置,这一切都会改变。问题是,我无法让三角形移入和移出Z,因为转换似乎没有任何作用。变量名真的很糟糕。