我正在研究一个涉及绘制大量非常简单的重叠阴影的程序。对阴影没有什么特别之处:它们有很强的边缘,并且在无穷远处有一个光源(即所有阴影都是平行的)。其独特之处在于,阴影代表部分部分区域的吸收光线,许多阴影可以重叠以形成逐渐变暗的区域。绘制大量重叠的2D阴影
下面是具体说明这个思想的图像:
我的问题是这样的:什么是采取的影子在我的程序一个很好的方式(存储为凸四边形),有效地借鉴他们到了屏幕?
我可以简单地用适当的alpha值绘制它们,结果看起来不错,但这样做会变得非常慢。我认为这是因为许多阴影中的像素被多次绘制。我怀疑一次只能绘制到每个像素的方法可能会快得多。
我的程序是用C++编写的,我使用Qt来完成UI和绘图。我很乐意利用一个库来做多边形裁剪或者其他东西(例如Clipper或boost),但是我不愿意进入OpenGL/GPU的世界(除非有一种特别无痛的方式来做到这一点) )。
任何想法?谢谢!
啊,谢谢!现在看来,以像素为单位而不是以阴影多边形来看,这一切似乎都变得更加简单。我会尝试实现这一点,我怀疑它的性能会大幅提升。如果速度足够快,我甚至可以尝试对像素进行超采样以获得一点抗锯齿。 – rrwick
@rrwick:不客气。代码祝你好运。如果可能,分享结果。 – neuro