我有两个精灵A和B. A - 不透明,Z = 1. B - 半透明,Z = 0.绘制呼叫顺序A - > B.
根据MSDN,我应该在绘制不同深度的透明精灵时使用标记D3DXSPRITE_SORT_DEPTH_BACKTOFRONT
。问题是它反之亦然 - 只有标志D3DXSPRITE_SORT_DEPTH_FRONTTOBACK
。
请解释深度排序在ID3DXSprite
中的工作原理以及Z值在哪里增长(我假设从0到1,1最远离屏幕)。
答案 0 :(得分:2)
如果您使用D3DXSPRITE_SORT_DEPTH_FRONTTOBACK
,您将获得按此顺序呈现的精灵:
Z = 1.0
Z = 0.0
首先绘制不透明的精灵,然后在它上面渲染半透明的精灵。如果你没想到会看到这两个精灵(就像你在这个场景中那样),那么问题可能就是你的透明精灵有一个错误的Z坐标 - 你正在后面的中绘制不透明的精灵。
我目前无法找到指向特定参考的链接,但实际情况是具有较低Z值的精灵会在具有较高值的后面的后面绘制。这更像是窗口的Z顺序,而不是用于深度测试的上下文。也许这是因为精灵本质上是2D。
从here开始,您可以阅读: