如图所示,屏幕上有多个响铃。要求说用户可以选择任何一个环,并且选择的环应该有发光效果(发光几秒钟然后变成绿色)。所有图形渲染都将使用 DirectX 9 + HLSL 完成。我面临的问题:
- 如何在着色器代码中将选定的环与其他环区分开来,以便只能将发光效果应用于该环。
您应该使用不同的渲染目标(SetRenderTarget 的文档)。首先,您将所有未选择的环渲染到后缓冲区。然后将选定的环绘制到一个额外的纹理作为渲染目标。你的光晕着色器使这个纹理发光,最后你将纹理渲染到后台缓冲区。所以你的绿色环是发光的,而其他环不受发光着色器的影响。
如果您想要有发光的线条并且不使用发光着色器进行其他任何操作,您可以使用“粗”线条和适当的纹理使线条发光,如下图所示:
这将比其他方法更容易实现并且更快:)