DirectX EmptyProjectを使う その11


7045KHz付近の、こんなノイズ、見た事ないですわ....何、これ? 

 1.周波数目盛りを打つ

     全て、計算しながら描いています。

     ですので、中心周波数さえ、設定してやれば、後は計算できます。

     例えば、中心周波数が、14,150,200Hzだと、しますと

   

     ちょっと、周波数目盛りに、ズレありますね... 涙 (-_-;;

           これは、現在の周波数目盛りが、93.75Hz刻み だからですねん。

     
初期設定の、間違いでした、スマソ (^_^;;

 以下、 

     48KHz sampling 時

  
 
     CW時

   
 2. 難しい所は?

 
     文字を、表示する事でした。

     spriteと、ID3DXFontを、使ったのですが、文字がチラつくのです、ムカつく.....

     最初は、こんな風に、プログラムしました。

 for(i=1;point_right[i]>0;i++)
 {
  txtHelper.SetInsertionPos(point_right[i],290);
  txtHelper.DrawTextLine(freq_array_right[i]);
 }
     これで、チラつくのです。

     文字表示は、重い処理なんですね....

     高速文字表示するには、

       文字を、別のspriteに書き込んで、これをtextureとして、読み、

       表示するspriteの backckbufferに、書き込むのが、よいそうなんですが....

     これが、資料がなくて....

  pD3DXFont->GetGlyphData
  pD3DXFont->PreloadText

     これらを使いたいのですが、まだ、使い方が、解りませんねんワン。

     で、結局、どうして チラつかなくなったかと、申しますと、

     それは、もう、べた書きですわ。

   txtHelper.SetInsertionPos(point_left[9],295);
    txtHelper.DrawTextLine(freq_array_left[9]);
   txtHelper.SetInsertionPos(point_left[8],295);
    txtHelper.DrawTextLine(freq_array_left[8]);

   txtHelper.SetInsertionPos(point_left[7],295);
    txtHelper.DrawTextLine(freq_array_left[7]);
   txtHelper.SetInsertionPos(point_left[6],295);
    txtHelper.DrawTextLine(freq_array_left[6]);
   txtHelper.SetInsertionPos(point_left[5],295);
    txtHelper.DrawTextLine(freq_array_left[5]);
 ............

     何で、forを使うと、チラつくのか、解りませんが....

     それから、

     ここで使った txtHelperは、DXUTmisc.hにあります、CDXUTTextHelper を、使いました。

DXUTmisc.h
//--------------------------------------------------------------------------------------
// Manages the intertion point when drawing text
//--------------------------------------------------------------------------------------
class CDXUTTextHelper
{
public:
    CDXUTTextHelper( ID3DXFont* pFont, ID3DXSprite* pSprite, int nLineHeight );

    void SetInsertionPos( int x, int y ) { m_pt.x = x; m_pt.y = y; }
    void SetForegroundColor( D3DXCOLOR clr ) { m_clr = clr; }

    void Begin();
    HRESULT DrawFormattedTextLine( const WCHAR* strMsg, ... );
    HRESULT DrawTextLine( const WCHAR* strMsg );
    HRESULT DrawFormattedTextLine( RECT &rc, DWORD dwFlags, const WCHAR* strMsg, ... );
    HRESULT DrawTextLine( RECT &rc, DWORD dwFlags, const WCHAR* strMsg );
    void End();

protected:
    ID3DXFont*   m_pFont;
    ID3DXSprite* m_pSprite;
    D3DXCOLOR    m_clr;
    POINT        m_pt;
    int          m_nLineHeight;
};

     参考文献 「DirectX9 DirectX Graphics IO BOOKS 工学社 」


     「適応フィルタ入門 シモン ヘイキン 武部 幹」 ちょっと、読み始めました。

   H.19.9.4