我正在使用托管 DirectX 尝试使用 Sprite 在屏幕上绘制纹理和一段文本。不幸的是,如果我将文本和纹理放在同一个精灵中,无论我执行绘制命令的顺序如何,纹理都会覆盖(过度绘制?)文本。
由于我最终会想要散布纹理和文本,我如何为这些精灵指定 Z 顺序。每一层都必须在一个单独的精灵中吗?
这是当前代码:
m_device.BeginScene();
m_device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
m_sprite.Begin(SpriteFlags.SortTexture | SpriteFlags.AlphaBlend);
// Switching the order of following two statements doesn't change the Z-Order!
m_sprite.Draw(m_texture, Vector3.Empty, new Vector3(0, 0, 0),
Color.White.ToArgb());
m_d3dFont.DrawText(m_sprite, m_text, x, y, color);
m_sprite.End();
m_device.EndScene();
m_device.Present();
注意:使用 SpriteFlags.SortDepthBackToFront 或 SpriteFlags.SortDepthBackToFront 不会改变行为。
这可能是我的概念上的误解,但如果代码有用,我将不胜感激地接受使用 C++ 或任何语言的非托管 DirectX 中的示例。
提前谢谢了!