【发布时间】:2012-02-27 19:57:33
【问题描述】:
我想使用 OpenGL(带着色器)在屏幕转换中做类似的事情。我一直在寻找一些教程或类似的东西,但没有任何效果。 我怎样才能达到这种效果?
【问题讨论】:
-
您是从 3D 场景开始的吗?或者你是从你展示的图像开始的?
-
我从 3d 场景开始,但我可以使用 FBO。
我想使用 OpenGL(带着色器)在屏幕转换中做类似的事情。我一直在寻找一些教程或类似的东西,但没有任何效果。 我怎样才能达到这种效果?
【问题讨论】:
只是一些关于如何开始的想法..
google 随机多边形代码,或对矩形进行三角剖分 Perlin 噪声、Voronoi 图(如上所述)等
【讨论】:
这种破碎效果最流行的算法之一是 Voronoi 图。研究该主题将为您提供有关高度可控的算法的详细信息,并为您提供类似的效果。
但是,它会生成凸多边形作为单元格。您的图像有一些凹块,但 VD 将是一个很好的开始。例如,您可以通过合并来自 Voronoi 图的一些生成的多边形来实现类似的效果。
【讨论】:
这是一种避免摆弄多边形并允许更多不同效果的方法:
只需使用面具。我先解释一下:只画一个随机方向的主要纹理四边形,但使用第二个纹理来获取它的 alpha。第二个纹理(蒙版)只是一个黑色图像,上面画着一个白色的块。请注意,它允许具有任何形状,而不仅仅是多边形。现在,只需使用不同的蒙版多次绘制主四边形就可以实现您想要的效果,但这需要很多纹理。
因此,要对所有片段仅使用一个蒙版纹理,您可以使用着色器,而不是直接使用蒙版的值作为 alpha,而是使用值 N(或 N 附近的范围)来表示仅对片段不透明N. 你现在只需要在渲染每一块之前增加 N。要创建蒙版,请使用黑色锯齿形绘制位图(使用图像编辑器),然后用调色板中的每种灰色阴影填充创建的多边形。如果您需要很多片段,您可以使用多个频道。
顺便说一句,使用位图函数生成该掩码应该很容易:只需创建一个位图,绘制一些随机线,扫描它并在每个空像素上使用泛光填充,每次都会增加颜色。至少这似乎比处理多边形切割更简单。
现在,我喜欢的是你可以免费拥有不规则的边缘,因为你有第二个纹理,你也可以用它来在主要的纹理上添加效果,比如你的黑色边框,甚至是带有各种颜色的玻璃边缘透明度级别。
【讨论】: