我有一个winform,并在其上设置direct3d以显示蓝屏。
Render
正在运行每一帧。
以下(以及上面的一些顶点声明)向屏幕输出一个三角形..到目前为止都很酷。
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);
我认为相关的代码: http://pastebin.com/rgfJGxk0
答案 0 :(得分:-1)
您最好不要使用相机将三角形转换为相同的位置。 Direct3D变换和投影算法基于现实世界的例子,就像用相机拍摄图像一样。所以想象一下,如果你把东西放在相机的同一个位置,你能抓住它吗?你需要一些距离。