コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Flash の Bitmap のようにテクスチャを扱うことができる「UnityFlashBitmap」紹介

はじめに

「UnityFlashBitmap」を Unity プロジェクトに導入することで
Flash の Bitmap のようにテクスチャを扱うことができるようになります

使用例

Texture2D texture;

var srcBmp = new BitmapData();
srcBmp.SetTexture2D( texture );

// 塗りつぶし
srcBmp.fillRect( new Rectangle( 0, 0, 10, 10 ), Color.green );

// フィルター
var grayScaleFilter = new MatrixFilter( new float[]
{
  0.298912f, 0.586611f, 0.114478f, 0, 0,
  0.298912f, 0.586611f, 0.114478f, 0 ,0,
  0.298912f, 0.586611f, 0.114478f, 0 ,0,
  0 , 0, 0, 1, 0
} );
distBmp.applyFilter
(
    srcBmp, 
    new Rectangle( 0, 0, srcBmp.width, srcBmp.height ), 
    null, 
    grayScaleFilter
);
distBmp.unlock(); // テクスチャに反映

var matrix = new []{ -1, -1, -1,  -1,  8, -1,  -1, -1, -1 }; // フィルタカーネル
int divisor = 1;
int bias = 0;
var convolutionFilter = new ConvolutionFilter( matrix, divisor, bias );
distBmp.applyFilter
(
    srcBmp, 
    new Rectangle( 0, 0, srcBmp.width, srcBmp.height ), 
    new Point( 0, 0 ), 
    convolutionFilter
);
distBmp.unlock(); // テクスチャに反映

関連記事