非常奇怪的问题,当我尝试绘制广告牌精灵时,它始终显示为白色块,更改 .draw color 属性仍将其绘制为白色,我使用 jpeg 或透明 png 也没关系。
[编辑]
所以我现在尝试使用 aViewport
而不是基本效果来获得 x 和 y 屏幕坐标,稍后我将解决任何缩放问题,但是现在图像保持在完全相同的位置(在屏幕上,它不会'不根据相机改变位置)并且不会根据它的距离变大或变小
我的新广告牌渲染功能:
public void Draw(Camera camera, GraphicsDevice device, SpriteBatch spriteBatch, Texture2D Texture)
{
Viewport viewport = new Viewport(new Rectangle(0, 0, 800, 480));
Vector3 viewSpaceTextPosition = viewport.Project(this.position, camera.Projection, camera.View, camera.World);
spriteBatch.Begin();
spriteBatch.Draw(Texture, new Vector2(viewSpaceTextPosition.X, viewSpaceTextPosition.Y), null, Color.White, 0, new Vector2(Texture.Bounds.Center.X, Texture.Bounds.Center.Y), this.Scale, SpriteEffects.None, viewSpaceTextPosition.Z);
spriteBatch.End();
device.RasterizerState = RasterizerState.CullCounterClockwise;
device.BlendState = BlendState.Opaque;
device.DepthStencilState = DepthStencilState.Default;
}
那么我对 Viewport 的使用是错误的,还是我只需要以不同的方式使用它的信息spriteBatch.Draw()
?