DirectX講座19回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
2012/12/26
半加算合成が間違っていたので修正
今回は、エフェクトってほどのものではありませんが加算合成...
加算合成はすでに書かれている色に対して
これから描こうとしている色を
通常は塗りつぶしに対して、
加算合成の場合は色を足します
今回使うファイルは次のようになってます。どぞー(-ω-)つ旦
・&ref(direct3d.h);
・&ref(direct3d.cpp);
・&ref(texture.h);
・&ref(texture.cpp);
・&ref(sprite.h);
・&ref(sprite.cpp);
・&ref(effect.cpp);(WinMain関数があるアプリケーション本...
今回使う画像はこちら
・bomb.png
&ref(bomb.png);
(↑右クリックで画像保存)
zipでほしい人はこちら
・&ref(effect.zip);
爆発などの表現に使われます
というのは
コンピュータ上での色は
0x00000000は真っ黒に対して、0xffffffffは真っ白になります
つまり色を足すことで白に近づきます
あまり足しすぎると真っ白になるので注意しましょう
DirectX講座16回でやったSetRenderState関数をdirect3d.hに持...
#pragma once
// Direct3Dクラスは同じなので略
// レンダーステートの設定
enum RENDERSTATE
{
RENDER_DEFAULT, // デフォルト(不透明)
RENDER_ALPHATEST, // αテスト
RENDER_HALFADD, // 半加算合成
RENDER_ADD // 加算合成
};
// レンダーステートの変更
void SetRenderState(IDirect3DDevice9* pD3DDevice,RENDERS...
direct3d.cppでSetRenderState関数を拡張します
#include "direct3d.h"
// Direct3Dクラスのメンバ関数は同じなので略
// レンダーステートの変更
void SetRenderState(IDirect3DDevice9* pD3DDevice,RENDERS...
{
switch(RenderState)
{
case RENDER_DEFAULT:
{
// 不透明オブジェクト
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALS...
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,FALS...
}
break;
case RENDER_ALPHATEST:
{
// αテストによる透明領域の切り抜き
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE...
pD3DDevice->SetRenderState(D3DRS_ALPHAREF, 0x80); ...
pD3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GRE...
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,FALS...
}
break;
case RENDER_HALFADD:
{
// 半加算合成
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALS...
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE...
pD3DDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE ...
//pD3DDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FAL...
//pD3DDevice->SetRenderState( D3DRS_LIGHTING, FALSE );...
pD3DDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_...
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SR...
pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ON...
}
break;
case RENDER_ADD:
{
// 全加算合成
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE...
pD3DDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_...
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ON...
pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ON...
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALS...
}
break;
}
}
effect.cppでSetRenderState関数を使います
DirectX講座16回と同様、描画直前に描画方法の指定をします
////////////////////////////////////////////////////////...
// 描画開始
if(SUCCEEDED(direct3d.pDevice3D->BeginScene()))
{
DWORD ClearColor = 0xff808080; // 背景クリア色
// 背景クリア
direct3d.pDevice3D->Clear( 0, NULL, D3DCLEAR_TARGET |...
// 加算合成
SetRenderState(direct3d.pDevice3D,RENDER_ADD);
// コマセット
sprite.SetUVNum(anim[frame % 16].numU,anim[frame % 16...
// スプライト描画
sprite.Draw(direct3d.pDevice3D,bombtex.pTexture);
// 描画終了
direct3d.pDevice3D->EndScene();
}
// 描画反映
direct3d.pDevice3D->Present( NULL, NULL, NULL, NULL );
// フレーム更新
frame++;
////////////////////////////////////////////////////////...
今回の実行結果は次のようになります
発光して爆発っぽさが出ていると思います
&ref(effect.png);
説明は省きますがSetRenderState関数の引数をRENDER_HALFADD...
前:DirectX講座18回
次:DirectX講座20回
| ふたえのきわみアッー|6|
|ガトチュゼロスタイル|2|
|「」[|2|
終了行:
2012/12/26
半加算合成が間違っていたので修正
今回は、エフェクトってほどのものではありませんが加算合成...
加算合成はすでに書かれている色に対して
これから描こうとしている色を
通常は塗りつぶしに対して、
加算合成の場合は色を足します
今回使うファイルは次のようになってます。どぞー(-ω-)つ旦
・&ref(direct3d.h);
・&ref(direct3d.cpp);
・&ref(texture.h);
・&ref(texture.cpp);
・&ref(sprite.h);
・&ref(sprite.cpp);
・&ref(effect.cpp);(WinMain関数があるアプリケーション本...
今回使う画像はこちら
・bomb.png
&ref(bomb.png);
(↑右クリックで画像保存)
zipでほしい人はこちら
・&ref(effect.zip);
爆発などの表現に使われます
というのは
コンピュータ上での色は
0x00000000は真っ黒に対して、0xffffffffは真っ白になります
つまり色を足すことで白に近づきます
あまり足しすぎると真っ白になるので注意しましょう
DirectX講座16回でやったSetRenderState関数をdirect3d.hに持...
#pragma once
// Direct3Dクラスは同じなので略
// レンダーステートの設定
enum RENDERSTATE
{
RENDER_DEFAULT, // デフォルト(不透明)
RENDER_ALPHATEST, // αテスト
RENDER_HALFADD, // 半加算合成
RENDER_ADD // 加算合成
};
// レンダーステートの変更
void SetRenderState(IDirect3DDevice9* pD3DDevice,RENDERS...
direct3d.cppでSetRenderState関数を拡張します
#include "direct3d.h"
// Direct3Dクラスのメンバ関数は同じなので略
// レンダーステートの変更
void SetRenderState(IDirect3DDevice9* pD3DDevice,RENDERS...
{
switch(RenderState)
{
case RENDER_DEFAULT:
{
// 不透明オブジェクト
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALS...
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,FALS...
}
break;
case RENDER_ALPHATEST:
{
// αテストによる透明領域の切り抜き
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE...
pD3DDevice->SetRenderState(D3DRS_ALPHAREF, 0x80); ...
pD3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GRE...
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,FALS...
}
break;
case RENDER_HALFADD:
{
// 半加算合成
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALS...
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE...
pD3DDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE ...
//pD3DDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FAL...
//pD3DDevice->SetRenderState( D3DRS_LIGHTING, FALSE );...
pD3DDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_...
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SR...
pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ON...
}
break;
case RENDER_ADD:
{
// 全加算合成
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE...
pD3DDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_...
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ON...
pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ON...
pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALS...
}
break;
}
}
effect.cppでSetRenderState関数を使います
DirectX講座16回と同様、描画直前に描画方法の指定をします
////////////////////////////////////////////////////////...
// 描画開始
if(SUCCEEDED(direct3d.pDevice3D->BeginScene()))
{
DWORD ClearColor = 0xff808080; // 背景クリア色
// 背景クリア
direct3d.pDevice3D->Clear( 0, NULL, D3DCLEAR_TARGET |...
// 加算合成
SetRenderState(direct3d.pDevice3D,RENDER_ADD);
// コマセット
sprite.SetUVNum(anim[frame % 16].numU,anim[frame % 16...
// スプライト描画
sprite.Draw(direct3d.pDevice3D,bombtex.pTexture);
// 描画終了
direct3d.pDevice3D->EndScene();
}
// 描画反映
direct3d.pDevice3D->Present( NULL, NULL, NULL, NULL );
// フレーム更新
frame++;
////////////////////////////////////////////////////////...
今回の実行結果は次のようになります
発光して爆発っぽさが出ていると思います
&ref(effect.png);
説明は省きますがSetRenderState関数の引数をRENDER_HALFADD...
前:DirectX講座18回
次:DirectX講座20回
| ふたえのきわみアッー|6|
|ガトチュゼロスタイル|2|
|「」[|2|
ページ名: