BlitzMax - 生成2D霓虹灯发光线效果到png文件

时间:2010-11-18 21:55:04

标签: opengl fragment-shader

我希望在BlitzMax中创建一个发光的线条效果,就像星球大战光剑或激光束。不必是实时的,而只是TImage对象,然后可能保存到PNG以供以后在动画中使用。我很高兴使用3D功能,但它将用于2D游戏。

由于它将在黑色/空间背景上,我的策略是绘制一系列具有颜色和高透明度的白色模糊线条,然后最终中心线条不那么模糊和更白。我想画的实际上是贝塞尔曲线。绘制曲线很容易,但我不能使用上面的技术来创建一个良好的激光/霓虹灯效果,因为它看起来非常分段。所以,我认为使用模糊效果/着色器可以更好地渲染渲染效果,这是一个1像素的贝塞尔曲线。

我遇到的问题是:

  • 将着色器应用于屏幕中绘制线条的某个区域。如果有办法在纹理上绘制线条,然后模糊纹理并保存png,那么听起来很棒。必须有一种方法可以做到这一点,但我还没有找到合适的元素。熟悉这些东西的人的任何帮助都将不胜感激。
  • 仅使用2D调用可能更有利,更易于理解和重复使用。
  • 知道如何保存保留透明度/ alpha内容的PNG将会非常好。

P.S。我已经回顾了这篇文章(以及其他文章),让样本有效,甚至开发了我自己的5x5着色器。但是,它是3D和一个场景范围的东西似乎没有转换为2D或只是某个区域非常好。 http://www.blitzbasic.com/Community/posts.php?topic=85263

1 个答案:

答案 0 :(得分:0)

好吧,我不知道BlitzMax,所以我不能详细介绍实现,但是给你一些指示:

  • 仅将着色器应用于图像的特定部分,您可能希望使用多个渲染过程来构成场景。
  • 如果您有像素访问权限,那么片段着色器所做的事情当然可能是2D中的“oldskool方式”,即。像getpixel / setpixel这样的东西。但是,你会以这种方式表现得更差。
  • 如果你的纹理带有完整的alpha通道,那么使用alpha通道保存在PNG中应该是Just Work(对不起,再一次不知道如何在BlitzMax中专门执行此操作)。请确保您一直使用RGBA模式。