|
小弟正在学龙书,遇到了字体创建的问题,问题在下面代码标示出来了!
#include "d3dUtility.h"
IDirect3DDevice9* Device = 0;
const int Width = 800;
const int Height = 600;
ID3DXFont* Font = 0;
DWORD FrameCnt = 0;
float timeElapsed = 0;
float FPS = 0;
char FPSstring[9];
bool Setup()
{
D3DXFONT_DESC desc = {
50,
25,
0,
0,
false,
DEFAULT_CHARSET,
OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_PITCH,
""};
strcpy(desc.FaceName, "Time New Roman");
////////////////////////////////////问题在这里!!!!!/////////////////////////////////////
// D3DXCreateFontIndirect(Device, &desc, &Font);
if(FAILED(D3DXCreateFontIndirect(Device, &desc, &Font)));
{
::MessageBox(0, "Error", 0, 0);
: ostQuitMessage(0);
}
return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//这样运行函数会弹出错误窗口,然我把这个检查创建字体的函数去掉,直接创建不检查,程序却能正常运行,我与源程序 照,完全一样(其实龙书对这个内容的代码是错误的,翁先生翻译的,我是对照其他的书改过来的,有这个判定函数照样运 行)。求大大们解析,本人求知若渴,万分感激!
void Cleanup()
{
d3d::Release<ID3DXFont*>(Font);
}
bool Display(float timeDelta)
{
if(Device)
{
FrameCnt++;
timeElapsed += timeDelta;
if(timeElapsed >= 1.0f)
{
FPS = (float)FrameCnt / timeElapsed;
sprintf(FPSstring, "%f", FPS);
FPSstring[8] = '\0';
FrameCnt = 0;
timeElapsed = 0.0f;
}
Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
Device->BeginScene();
RECT rect = {0, 0, Width, Height};
Font->DrawText(
NULL,
FPSstring,
-1,
&rect,
DT_LEFT | DT_TOP,
0xff000000
);
Device->EndScene();
Device-> resent(0,0,0,0);
}
return true;
} |
|