如何将Texture2D旋转到屏幕上?

我正在绘制一个Texture2D到屏幕上,并且需要以3D方式向前旋转纹理。 我正在使用SpriteBatch Draw()方法,它只允许围绕Z轴进行有限的2D旋转。 从大量的在线研究中,我已经解决了将效果或matrix传递给SpriteBatch的Begin()方法的解决scheme; 然而,经过几个小时的反复试验,我还没有拿出任何工作。

我有点得到它。 也许有一些调整,你可以得到它的其余部分。

首先在更新 ,我得到的数额旋转

 var ks = Keyboard.GetState(); if (ks.IsKeyDown(Keys.Down)) xAxis += 1f; if (ks.IsKeyDown(Keys.Up)) xAxis -= 1f; Xtransform = Matrix.CreateRotationX(MathHelper.ToRadians(xAxis)); 

然后创建一个效果并应用转换。 Matrix.CreateOrthographicOffCenter只是定位我们的相机。 它假设一个800×600的屏幕。 然后我们通过旋转变换来乘以它。

 BasicEffect e = new BasicEffect(GraphicsDevice); e.World = Matrix.Identity; e.View = Matrix.Identity; e.TextureEnabled = true; e.Texture = sprite; e.Projection = Matrix.CreateOrthographicOffCenter(0, 800, 600, 0, 0, 1) * Xtransform; 

现在在Draw中,只需将效果应用到SpriteBatch.Begin方法(使用第4次重载)。 我说这是有点作品,因为它只是旋转到屏幕上。 旋转时消失。 下面的图片显示了之前(顶部)和之后(底部)的样子。 这是你想要的,对吧? 我知道它看起来很扁,但是它是2D纹理。 这不是要弯曲的方式:)

在这里输入图像描述