画像のパレット設定機能
紙袋  2014/11/13(Thu) 17:47
Siv3D使わせてもらっています。

さっそく質問なのですが、
Siv3Dには、画像に対してドット単位でアクセスして、
色を変更した新たな画像を生成する機能、方法は現在あるのでしょうか?
(DxライブラリにあるSetPaletteSoftImage関数のような機能)

作成している作品の中で、所謂ゲームにあるような2Pカラーのように画像の色のみを変更したいのですが、
それを行う方法が、Siv3Dでどのようにすればいいのか分からないので質問させていただきました。

よろしくお願いします。
Reputeless  2014/11/13(Thu) 20:36
画像にピクセル単位でアクセスするには Image を使います。

# include <Siv3D.hpp>

void Main()
{
Image image(200, 200, Palette::White);

for (int y = 0; y < image.height; ++y)
{
for (int x = 0; x < image.width; ++x)
{
image[y][x] = Color(x, y, 255);
}
}

const Texture texture(image);

while (System::Update())
{
texture.draw(Mouse::Pos());
}
}

2P カラーを簡単に作りたい場合、白い Texture に色を付けて描画する方法もあります。


# include <Siv3D.hpp>

void Main()
{
const Texture texture(L"Example/Particle.png");

while (System::Update())
{
texture.draw(100, 100, Color(255, 0, 0));

texture.draw(200, 100, Color(0, 255, 0));

texture.draw(300, 100, Color(0, 0, 255));
}
}
紙袋  2014/11/14(Fri) 15:34
書いていただいたプログラムを、
自分の持っている画像に差し替えて書いてみたら望んだ通りの結果が出ました。

ありがとうございました。

- WEB PATIO -