DirectX实现Mod转换

时间:2011-11-09 16:50:55

标签: directx

我需要帮助在DirectX中实现MOD转换。可以使用两种纹理进行转换。我最初考虑使用像素着色器,但无法继续。

MOD转换的详细信息可以在以下链接中找到: http://www.stone.com/iMaginator/Manual/Mod.html

任何关于方法的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

由于我对directx着色器的了解有限(我在2年内没有触及直接x),我只能举例说明如何在opengl中实现它。

我会设置3个纹理。第一个是背景图像,第二个是前景图像(将要放入孔的图像),第三个是仅具有两种颜色(黑色和白色)的蒙版图像。然后,我将第一遍作为全屏四边形绘制背景图像。然后我会用另外两个纹理(前景图像+蒙版)绘制另一个全屏四边形。

在opengl像素着色器中有“discard”命令,可以放弃像素。您需要做的就是在第二个着色器中对两个纹理进行采样,如果掩模像素为白色,则丢弃像素(从而显示背景),如果是黑色,则显示纹理像素(来自前景图像)

然后您需要做的就是在渲染周期完成后,使用某种算法修改cpu端的蒙版纹理,逐步使越来越多的蒙版纹理变白。

如果directX着色器具有与discard命令类似的功能,您可能能够使其工作。希望这会有所帮助。