ID3DXSprite深度排序

时间:2014-01-01 14:23:59

标签: sprite direct3d directx-9

我有两个精灵A和B. A - 不透明,Z = 1. B - 半透明,Z = 0.绘制呼叫顺序A - > B.

根据MSDN,我应该在绘制不同深度的透明精灵时使用标记D3DXSPRITE_SORT_DEPTH_BACKTOFRONT。问题是它反之亦然 - 只有标志D3DXSPRITE_SORT_DEPTH_FRONTTOBACK

请解释深度排序在ID3DXSprite中的工作原理以及Z值在哪里增长(我假设从0到1,1最远离屏幕)。

1 个答案:

答案 0 :(得分:2)

如果您使用D3DXSPRITE_SORT_DEPTH_FRONTTOBACK,您将获得按此顺序呈现的精灵:

Z = 1.0
Z = 0.0

首先绘制不透明的精灵,然后在它上面渲染半透明的精灵。如果你没想到会看到这两个精灵(就像你在这个场景中那样),那么问题可能就是你的透明精灵有一个错误的Z坐标 - 你正在后面的中绘制不透明的精灵。

我目前无法找到指向特定参考的链接,但实际情况是具有较低Z值的精灵会在具有较高值的​​后面的后面绘制。这更像是窗口的Z顺序,而不是用于深度测试的上下文。也许这是因为精灵本质上是2D。

here开始,您可以阅读:

zorder