タイトルが合っていない気もしますがこれしか文が考え付きませんでした。
東方風神録の東風谷早苗のスペル背景、朝顔みたいな柄が色が赤や緑や色々に変化するのですが、
どうやったらそのように出来るのでしょうか。
自分は何枚か違う色の画像を用意してそれぞれの透明度をDXライブラリのブレンドモードのALPHAで変化させて
それっぽくしているのですが、完全不透明でなくなる時間が少なからず出来てしまいます。
そうならずに色を変化させる方法はないのでしょうか。
下手な文章ですみません。よろしくおねがいします。
東方の背景画像
Re: 東方の背景画像
SetDrawBright関数を使ったらそれっぽくならないでしょうかね?とんとん さんが書きました:タイトルが合っていない気もしますがこれしか文が考え付きませんでした。
東方風神録の東風谷早苗のスペル背景、朝顔みたいな柄が色が赤や緑や色々に変化するのですが、
どうやったらそのように出来るのでしょうか。
自分は何枚か違う色の画像を用意してそれぞれの透明度をDXライブラリのブレンドモードのALPHAで変化させて
それっぽくしているのですが、完全不透明でなくなる時間が少なからず出来てしまいます。
そうならずに色を変化させる方法はないのでしょうか。
下手な文章ですみません。よろしくおねがいします。
毎回ゲーム作ろうとするたびに壁にぶち当たる
- Hiragi(GKUTH)
- 記事: 167
- 登録日時: 13年前
- 住所: 大阪府
- 連絡を取る:
Re: 東方の背景画像
各ピクセルの要素を変えるのであればピクセルシェーダなどを使用することが多いのかなーと思います。
そんなに拘らないのであれば、GraphFilter関数を使用し、最初から用意されているシェーダを利用する手もあります。
http://dxlib.o.oo7.jp/function/dxfunc_graph1.html#R3N26
そんなに拘らないのであれば、GraphFilter関数を使用し、最初から用意されているシェーダを利用する手もあります。
http://dxlib.o.oo7.jp/function/dxfunc_graph1.html#R3N26
だいがくせい!
- Hiragi(GKUTH)
- 記事: 167
- 登録日時: 13年前
- 住所: 大阪府
- 連絡を取る:
Re: 東方の背景画像
動画を見ても良くわからなかったのでこういうのでいいのか分からないのですが
こういう感じを目指しているのでしょうか?
間違っていたらすいません。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
int gr;
int i = 0;
gr = LoadGraph("test.png");
while (ProcessMessage() == 0)
{
i++;
if(i == 360) i = 0;
GraphFilter(gr,DX_GRAPH_FILTER_HSB,1,i,0,0); //フィルタセット
SetDrawBlendMode(DX_BLENDMODE_ALPHA,128); //ブレンドモードセット
DrawGraph(0,0,gr,true);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0); //戻す
ScreenFlip();
ClearDrawScreen();
}
DxLib_End();
return 0;
}
間違っていたらすいません。
- 添付ファイル
-
- test.png (85.74 KiB) 閲覧数: 3502 回
だいがくせい!
- Hiragi(GKUTH)
- 記事: 167
- 登録日時: 13年前
- 住所: 大阪府
- 連絡を取る:
Re: 東方の背景画像
ちゃんと見てきましたので、それっぽく再現してみました。
今回は減算ブレンドを使用していますが、別のブレンドモードをいろいろ試してみるのも良いかもしれません。
今回は減算ブレンドを使用していますが、別のブレンドモードをいろいろ試してみるのも良いかもしれません。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(true);
if (DxLib_Init() != 0) return -1;
SetDrawScreen(DX_SCREEN_BACK);
int back = LoadGraph("back00.png");
int gr = LoadGraph("test.png");
int cnt = 0;
while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0)
{
cnt++;
//色相フィルターをかける
GraphFilter(gr, DX_GRAPH_FILTER_HSB, 0, 2, 0, 0);
DrawGraph(0,0,back,true);
//減算ブレンドさせる
SetDrawBlendMode(DX_BLENDMODE_SUB, 128);
//繰り返し描画させる
for (int i = 0; i < 16;i++)
for (int k = 0; k < 16;k++)
DrawGraph(i * 256, k * 256 - (cnt % 256), gr, true);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
}
DxLib_End();
return 0;
}
だいがくせい!
Re: 東方の背景画像
夢幻ノ月夜さん、Hiragi(GKUTH)さんから教えていただいた方法、どちらもいい感じに動きました。
今回は単純なコードで済みそうなので夢幻ノ月夜さんから教えていただいた方を使ってみます。
ありがとうございました。
今回は単純なコードで済みそうなので夢幻ノ月夜さんから教えていただいた方を使ってみます。
ありがとうございました。