とりあえずSeleneでパーティクルを描画してみます
パーティクルとして表示するイメージは、
なんかいい感じのやつを探してみたのですが、なかなかないので適当に作りました
(爆発のつもりです…見えないけど…)
パーティクルの場合もモデルと同じように描画していきます
生成はこの方法で大丈夫なはず
- イメージからテクスチャ(Renderer::ITexture)を生成する
- そのテクスチャを使ってパーティクル(Renderer::Object::IParticle)を生成する
- そのパーティクルを使ってパーティクルアクター(Scene::IParticleActor)を生成する
app.cpp/CApp::Initialize
// テクスチャの作成
m_pTexture=m_pRender->CreateTextureFromFile("bomb.png");
if(m_pTexture==NULL){return false;}
// パーティクルの作成
m_pParticle=m_pRender->CreateParticle(100,m_pTexture,PARTICLE_TYPE_NORMAL);
if(m_pParticle==NULL){return false;}
// Actorの作成
m_pActor=m_pSceneManager->CreateActor(m_pParticle);
if(m_pActor==NULL){return false;}
描画はこの方法で大丈夫なはず
- まずパーティクル(Renderer::Object::IParticle)のDraw関数でどの座標にどのくらいの大きさで描くかを指定する
必ずRenderer::Object::IParticle::Begin()~::End()の間ですること
- パーティクルアクター(Scene::IParticleActor)が描画をシーンマネージャーに要請する(RenderingRequest関数)
- シーンマネージャーに描画させる(Scene::ISceneManager::Rendering関数)
app.cpp/CApp::Run
m_pParticle->SetBasePosition(Math::Vector3D(0.0f,0.0f,0.0f));
m_pParticle->Begin();
m_pParticle->Draw(m_Pos,Math::Point2DF(1.0f,1.0f),Math::Rect2DI(0,0,64,64),CColor(255,255,255));
// カメラの位置・姿勢情報の更新
m_pCamera->SetTransformSimple(Math::Vector3D(0.0f,0.0f,-8.0f),Math::Vector3D(0.0f,0.0f,0.0f),DEG_TO_ANGLE(0.0f));
m_pCamera->Update();
// シーンマネージャーのリセット
m_pSceneManager
->Reset();m_pSceneManager->SetParameter_BGColor(CColor(128,128,128));
// シーンに平行光を当てる
m_pSceneManager->SetLightParameter_Directional(Math::Vector3D(0.5f,-0.5f,0.7f),Math::Vector3D(0.8f,0.8f,0.8f));
// シーンマネージャーへのレンダリングリクエスト(かならずカメラの位置姿勢を決めてから)
m_pSceneManager->Begin(true);
m_pActor->RenderingRequest();
// 裏画面のクリア(white)
m_pRender->Clear(CColor(255,255,255));
// 画面への描画
m_pRender->Begin();
m_pSceneManager->Rendering(true);
m_pRender->DrawText(Math::Point2DI(0,0),CColor(0,0,0),"Pos=[%2.2f,%2.2f,%2.2f];",m_Pos.x,m_Pos.y,m_Pos.z);
void Selene::Renderer::Object::IParticle::Draw(const Math::Vector3D& vPosition, const Math::Point2DF& Size, const Math::Rect2DI& SrcRect,CColor Color)
パーティクルに内部バッファへのデータの追加を行います
| vPosition |
ポイントスプライトの位置 |
| Size |
ポイントスプライトの大きさ |
| SrcRect |
テクスチャの中で描画する領域 |
| Color |
テクスチャに乗算する色 |
最終更新:2009年06月14日 04:13