在写一个利用D3D Sprite贴2D图的作业,另外需要渲染一些文字用LPD3DXFONT创建一个字体对象
D3DXCreateFont(m_pDevice, 50, 20, 20, 0, FALSE, DEFAULT_CHARSET, 0, 0, 0, "Arial", &m_pD3DFont);然后
m_pD3DFont->DrawTextA(m_pSprite,m_TextChar,strlen(m_TextChar),&m_TextRect,DT_CENTER,D3DCOLOR_XRGB(255,0,0));结果出来以后只有一个红色的矩形框,没出文字如果把DrawTextA中第一个参数,也就是sprite的参数写成NULL,就能出文字了。但只要窗口一有变化就会报错。我还是想用传入sprite的方法。应该怎么改设置呢?
D3DXCreateFont(m_pDevice, 50, 20, 20, 0, FALSE, DEFAULT_CHARSET, 0, 0, 0, "Arial", &m_pD3DFont);然后
m_pD3DFont->DrawTextA(m_pSprite,m_TextChar,strlen(m_TextChar),&m_TextRect,DT_CENTER,D3DCOLOR_XRGB(255,0,0));结果出来以后只有一个红色的矩形框,没出文字如果把DrawTextA中第一个参数,也就是sprite的参数写成NULL,就能出文字了。但只要窗口一有变化就会报错。我还是想用传入sprite的方法。应该怎么改设置呢?
Draws formatted text. This method supports ANSI and Unicode strings.INT DrawText( LPCSTR pString,
INT Count,
LPRECT pRect,
DWORD Format,
D3DCOLOR Color
);
奇怪你怎么会有6个参数呢?
http://msdn.microsoft.com/en-us/library/bb173962(v=VS.85).aspx
你看这个……第一个参数传的是sprite……
#define INTERFACE ID3DXFontDECLARE_INTERFACE_(ID3DXFont, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE; // ID3DXFont
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetLogFont)(THIS_ LOGFONT* pLogFont) PURE; STDMETHOD(Begin)(THIS) PURE;
STDMETHOD_(INT, DrawTextA)(THIS_ LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD_(INT, DrawTextW)(THIS_ LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD(End)(THIS) PURE; STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};我这边的DriectX9的头文件也就5个参数,估计你的DirectX不是同一个版本,应该是最新的,我这个是比较早的