DirectX EmptyProjectを使う その11 以下、 txtHelper.SetInsertionPos(point_left[7],295); void SetInsertionPos( int x, int y ) { m_pt.x = x;
m_pt.y = y; } void Begin(); protected:
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.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 SetForegroundColor( D3DXCOLOR clr
) { m_clr = clr; }
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();
ID3DXFont*
m_pFont;
ID3DXSprite*
m_pSprite;
D3DXCOLOR
m_clr;
POINT
m_pt;
int
m_nLineHeight;
};
参考文献 「DirectX9
DirectX Graphics IO BOOKS 工学社 」
「適応フィルタ入門 シモン ヘイキン 武部
幹」 ちょっと、読み始めました。
H.19.9.4