2010-11-18 5 views
0

Я ищу, чтобы создать светящийся эффект линии в BlitzMax, что-то вроде светового меча Star Wars или лазерного луча. Не обязательно быть в реальном времени, а просто для объектов TImage, а затем, возможно, сохранен в PNG для последующего использования в анимации. Я рад использовать 3D-функции, но он будет использоваться в 2D-игре.BlitzMax - генерация 2D неонового светящегося эффекта линии для файла png

Поскольку это будет на черном фоне, моя стратегия состоит в том, чтобы нарисовать серию белых размытых линий с цветом и высокой прозрачностью, а затем в конечном итоге центральные линии будут менее размытыми и более белыми. То, что я хочу нарисовать, на самом деле без изогнутых линий. Рисование кривых линий достаточно просто, но я не могу использовать технику выше, чтобы создать хороший эффект лазера/неона, потому что он выглядит очень сегментированным. Итак, я думаю, что лучше использовать эффект размытия/шейдера для того, что делает рендеринг, который является 1-пиксельной кривой безье.

Проблемы у меня были следующие:

  • Применение шейдера к только определенной области экрана, на котором линии рисуются. Если есть способ сделать рисование линий текстурой, а затем размыть эту текстуру и сохранить png, это было бы здорово услышать. Там должен быть способ сделать это, но я просто не получил правильных элементов, работающих вместе еще. Любая помощь от кого-то, знакомого с этим материалом, будет очень признательна.
  • Использование только двухмерных вызовов может быть выгодным, проще понять и повторно использовать.
  • Было бы очень приятно знать, как сохранить PNG, который сохраняет прозрачность/альфа-материал.

p.s. Я просмотрел этот пост (и другие), работал с образцами и даже разработал собственный 5x5 шейдер. Но это 3D и сюжетная вещь, которая, похоже, не очень хорошо преобразуется в 2D или только в определенную область. http://www.blitzbasic.com/Community/posts.php?topic=85263

ответ

0

Хорошо, хорошо, я не знаю о BlitzMax, поэтому я не могу вдаваться в подробности относительно реализации, но, чтобы дать вам несколько советов:

  • Для применения шейдеры конкретных частей только изображение, вы, вероятно, захотите использовать несколько проходов рендеринга для создания вашей сцены.
  • Если у вас есть доступ к пикселям, то делать то же самое, что делают фрагменты шейдеров, конечно, возможно «путь oldskool» в 2D, т.е. что-то вроде getpixel/setpixel. Тем не менее, у вас будет гораздо более низкая производительность.
  • Если у вас есть текстура с альфа-каналом без изменений, сохранение в PNG с альфа-каналом должно просто работать (извините, еще раз не знаю, как это сделать в BlitzMax конкретно). Просто убедитесь, что вы используете режимы RGBA.
+0

BlitzMax позволяет загружать шейдеры, и у меня есть рабочий пример для фрагментов, но я не понимаю, как применять шейдер к определенной области экрана или лучше всего к одному изображению. Вероятно, слишком большой предмет, чтобы войти в него, не уточняя особенности BlitzMax. Спасибо за указатели, и я увижу, что я могу придумать через пару дней после возвращения к этому проекту хобби. – zanlok