C# SharpDX工具包模型由内而外渲染
不久前,我决定从XNA切换到SharpDX Toolkit,因为它受到了积极的支持,并且与XNA非常相似。虽然我在创建2D游戏方面没有遇到任何问题,但我决定尝试一个基本的3D游戏。我可以加载模型和它的纹理,但当它渲染时,它只显示背向摄影机一侧的纹理,而不显示中间的任何东西 这是我用来设置环境的代码C# SharpDX工具包模型由内而外渲染,c#,sharpdx,C#,Sharpdx,不久前,我决定从XNA切换到SharpDX Toolkit,因为它受到了积极的支持,并且与XNA非常相似。虽然我在创建2D游戏方面没有遇到任何问题,但我决定尝试一个基本的3D游戏。我可以加载模型和它的纹理,但当它渲染时,它只显示背向摄影机一侧的纹理,而不显示中间的任何东西 这是我用来设置环境的代码 Vector3 cameraPosition = new Vector3(0, 0, -10f * 2.5f); Vector3 cameraTarget = Vector3.Zero
Vector3 cameraPosition = new Vector3(0, 0, -10f * 2.5f);
Vector3 cameraTarget = Vector3.Zero;
BoundingSphere modelBounds = model.CalculateBounds();
float fovAngle = MathUtil.DegreesToRadians(45);
float aspectRatio = (float)GraphicsDevice.BackBuffer.Width / GraphicsDevice.BackBuffer.Height;
float near = 0.01f;
float far = 100f;
float scaling = 10f / modelBounds.Radius;
Matrix translation = Matrix.Scaling(scaling) * Matrix.RotationY((float)gameTime.TotalGameTime.TotalSeconds) * Matrix.Translation(0, -modelBounds.Center.Y * scaling, 0);
Matrix lookAt = Matrix.LookAtLH(cameraPosition, cameraTarget, Vector3.Up);
Matrix projection = Matrix.PerspectiveFovLH(.9f, aspectRatio, near, far);
这就是呈现它的代码
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
model.Draw(GraphicsDevice, translation, lookAt, projection);
base.Draw(gameTime);
}
感谢您提供的任何帮助。请注意,当曲面法线反转时,会出现这种行为;背面消隐是隐藏正面,显示背面而不是消隐。如果多边形方向错误,法线可以翻转。请参阅以获取解释和修复。谢谢您的帮助,效果非常好。