0

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

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

我遇到的问题是:

  • 将着色器应用于屏幕上绘制线条的特定区域。如果有办法在纹理上画线,然后模糊该纹理并保存 png,那将是很棒的消息。必须有办法做到这一点,但我还没有让正确的元素一起工作。任何熟悉这些东西的人的帮助将不胜感激。
  • 仅使用 2D 调用可能是有利的,更易于理解和重用。
  • 很高兴知道如何保存保留透明度/alpha 内容的 PNG。

ps 我已经查看了这篇文章(和其他文章),让示例工作,甚至开发了我自己的 5x5 着色器。但是,它是 3D 和场景范围的东西,似乎不能很好地转换为 2D 或只是某个区域。 http://www.blitzbasic.com/Community/posts.php?topic=85263

4

1 回答 1

0

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

  • 为了仅将着色器应用于图像的特定部分,您可能需要使用多个渲染通道来组成场景。
  • 如果您有像素访问权限,那么在 2D 中执行与片段着色器相同的操作当然是可能的“oldskool 方式”,即。getpixel/setpixel 之类的东西。但是,这种方式的性能会差很多。
  • 如果您的纹理具有完整的 Alpha 通道,则使用 Alpha 通道保存在 PNG 中应该可以正常工作(抱歉,再次不知道如何在 BlitzMax 中专门执行此操作)。只要确保您一直使用 RGBA 模式即可。
于 2010-11-25T09:26:51.237 回答