顶部表示的3d图标与直接x 9在c ++

时间:2011-03-07 11:28:32

标签: visual-c++ directx directx-9

我正在做一个模拟器视觉,我有很多2D图标代表模拟的元素,我有一个3D(.x用Blender制作)图标,代表另一个更重要的元素。

我需要在其他2d图标(.tga)之上创建这个图标,但我找不到制作它的方法。 Direct x是否有可能在其余的2D图标上绘制一个3d图标? 此时,2D图标始终位于3D顶部。

可以请某人帮助我。我正在用C ++编程 非常感谢提前。

2 个答案:

答案 0 :(得分:0)

渲染2D图标时禁用Z-writes。然后,当您启用Z-writes渲染3D图标时,它将渲染到2D图标。

目前您的问题是当您渲染2D图标时,您正在使用z值进行此操作,该值是z缓冲区的前端(最可能为0)。您可能还会发现可以将z值设置为1(这可能也是,这完全取决于您如何设置2D渲染)以强制在z缓冲区的后面渲染2d图标。

Z缓冲区中没有条目等同于它位于Z顺序的后面。

答案 1 :(得分:0)

假设您启用了深度缓冲,则需要确保图标的Z值远离相机而非模型。如果您使用的是ID3DXSprite,则应该能够在调用Draw函数时或使用ID3DXSprite::SetTransform()函数指定Z位置。

请注意,ID3DXSprite可能会使用与模型不同的投影矩阵绘制精灵,具体取决于传递给ID3DXSprite :: Begin()的标志。您可能希望使用D3DXSPRITE_OBJECTSPACE标记。