这是我创建的第一个 3D 应用程序,如果这看起来像一个简单的问题,我很抱歉,但我已经搜索了互联网和这些论坛,试图找到答案。
我正在尝试使用 spriteBatch.DrawString 命令在屏幕上绘制一个简单的字符串。
该应用程序类似于 Minecraft,屏幕上有大量立方体。为了解决滞后问题,所有立方体都是通过顶点创建的,并且已经实现了硬件实例化。
问题是当我调用 spriteBatch.Begin() 时,所有其他多维数据集看起来都不同。我知道 spritebatch 更改了某些状态,因此添加了以下行
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
Bellow 是用来绘制玩家的代码
public void Draw(Matrix view, Matrix projection)
{
effect.CurrentTechnique = effect.Techniques["TexturedNoShading"];
effect.Parameters["xView"].SetValue(view);
effect.Parameters["xProjection"].SetValue(projection);
effect.Parameters["xWorld"].SetValue(world);
effect.Parameters["xTexture"].SetValue(texture);
device.SetVertexBuffer(myVertexBuffer);
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, vertices.Length, 0, indices.Length / 3);
}
}
这是主类中用于绘制所有内容的代码
RasterizerState rs = new RasterizerState();
rs.CullMode = CullMode.None;
rs.FillMode = FillMode.Solid;
device.RasterizerState = rs;
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
_map.Draw(_camera.GetCamera(), projection);
_player.Draw(_camera.GetCamera(), projection);
spriteBatch.Begin();
spriteBatch.DrawString(Text, "test", new Vector2(100, 100), Color.White);
spriteBatch.End();
我想发布问题的屏幕截图以更清楚地显示它,但由于这是我的第一篇文章,我无权发布图像。我很高兴将图像通过电子邮件发送给人们。
我很乐意提供任何其他信息,但这似乎是一个简单的问题。
感谢您提供的任何帮助。
山姆维克里