簡易フォント

気がつけば前の更新から大分経ってしまいました…

今回は簡易フォント機能を追加しました。
ASCIIコードで表せる文字列を表示出来ます。

大体の使い方は以下の通りです。


// 初期化
{
    // Direct3Dマネージャ作成
    CD3DManager::CreateInstance();
    CD3DManager::GetInstance()->Activate();

    // デバイス作成
    mDevice = new CD3DDevice();
    mDevice->Activate(
        mWindow->GetHandle(),
        CD3DManager::GetInstance()->GetD3D(),
        CLIENT_WIDTH,
        CLIENT_HEIGHT,
        true
    );

    // テクスチャ管理作成
    CD3DTextureManager::CreateInstance();

    // スプライト描画作成
    CD3DSpriteRenderer::CreateInstance();
    CD3DSpriteRenderer::GetInstance().Activate( mDevice );

    // 簡易フォント作成
    SimpleFont::CreateInstance();
    SimpleFont::GetInstance().Activate( mDevice );
}

// 描画(メインループ)
{
	while( 1 ){
	    CD3DSpriteRenderer::GetInstance().Update();

	    SimpleFont::GetInstance().SetPosition( 0.0f, 0.0f );	// 表示位置をスクリーン座標系で指定
	    SimpleFont::GetInstance().SetScale( 2.0f );				// スケールを設定
	    SimpleFont::GetInstance().SetColor( 0xffffffff );		// 表示色を設定
	    SimpleFont::GetInstance().Print( __T( "TEST x 2" ) );	// 文字列を表示

	    // 描画開始
	    if( mDevice->BeginScene() ){

	        // スプライト描画
	        CD3DSpriteRenderer::GetInstance().Render();

	        // 描画終了
	        mDevice->EndScene();
	    }
    }
}


フォントはスプライトの機能を使用しているので、
CD3DSpriteRendererのUpdateとRenderは必須になります。

一応スプライトの大体の使用方法です。
まだこのスプライト機能は未完成な感じで、アルファとかZ深度とか怪しい気がしますが…
初期化の辺りは上記と同じです。


// テクスチャ作成
mTextureId = CD3DTextureManager::GetInstance().Add( __T( "data/test.bmp" ), mDevice, 0xff000000 );

while( 1 ){
    CD3DSpriteRenderer::GetInstance().Update();

	CD3DSpriteRenderer::SSprite sprite;
	sprite.px = sprite.py =   0.0f;	// 表示位置
	sprite.tx = sprite.ty =   0.0f;	// テクスチャ内の左上座標
	sprite.tw = sprite.th = 128.0f;	// テクスチャ内の右下座標=( sprite.tx + sprite.tw, sprite.ty + sprite.th)
	sprite.scale = 1.0f;			// 表示スケール
	sprite.color = 0xffffffff;		// ブレンドカラー
	sprite.depth = 0.0f;			// Z深度
	sprite.tid = mTextureId;		// テクスチャID

	CD3DSpriteRenderer::GetInstance().AddSprite( sprite );

    // 描画開始
    if( mDevice->BeginScene() ){

        // スプライト描画
        CD3DSpriteRenderer::GetInstance().Render();

        // 描画終了
        mDevice->EndScene();
    }
}


詳細は main/app.cpp をご覧下さい。

次はモデル表示をやりたいと思っていますが、
その前に肝心のモデルデータを作成しなければなりません。
ということで、XSIのプラグインを作成したいと思います。

XSIもAutodeskに吸収されてしまったのでこのプラグインがいつまで持つか甚だ疑問ではありますが、
自分の環境で試せるのはXSIしかないのであしからず。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です