|
|
只是画移动的小方块,小方块的位置根据当前时间减去初始的时间得出。
主循环:
BeginTime=GetTickCount();
while(1)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
Render();
}
}
Rander()里面就是用GetTickCount()-BeginTime,得出了位置结果再画。。
可是每次的位移不稳定,也就是说小方块不是匀速的。。
打印出每次的移动量:
7.5
0
0
16
7.5
8
8
7.5
8
7.5
8
8
7.5
8
8
7.5
15.5
0
8
7.5
8
8
7.5
8
7.5
8
15.5
0
8
8
7.5
8
15.5
8
7.5
8
8
7.5
8
7.5
8
8
7.5
8
8
7.5
15.5
8
8
7.5
8
8
7.5
8
7.5
8
8
7.5
8
8
有的是0(?),有的是2倍。小方块就是一抖一抖的。
请问是怎么回事?如何解决?
各项设置如下。。全是抄来的,不知有没有问题?
pD3D = Direct3DCreate9(D3D_SDK_VERSION);//创建D3D对象,D3D_SDK_VERSION为在d3d9.h中定义的版本号
pD3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm); //得到当前的显示模式
ZeroMemory(&d3dpp, sizeof(d3dpp)); //清空d3dpp,准备填充内容
d3dpp.Windowed=FALSE;
d3dpp.hDeviceWindow=hwnd; //窗口句柄
d3dpp.SwapEffect=D3DSWAPEFFECT_FLIP; //设定换页效果为翻页
d3dpp.BackBufferCount=2; //有2个后台缓存
d3dpp.BackBufferWidth=1024; //屏幕宽为800像素
d3dpp.BackBufferHeight=768; //屏幕长为600像素
d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT; //使用当前设定的此显示模式下的刷新率
d3dpp.PresentationInterval=D3DPRESENT_INTERVAL_IMMEDIATE;//立即显示刷新后的图像
d3dpp.BackBufferFormat=d3ddm.Format; //色彩深度为桌面的色彩深度
d3dpp.EnableAutoDepthStencil=TRUE; //开启自动深度缓存,即自动按正确的遮盖关系显示图像
d3dpp.AutoDepthStencilFormat=D3DFMT_D16; //16位自动深度缓存
//创建D3D设备
pD3D->CreateDevice( D3DADAPTER_DEFAULT, //使用主显示设备
D3DDEVTYPE_HAL, //使用3D硬件,若为D3DDEVTYPE_REF则只使用CPU
hwnd, //窗口句柄
//下面的参数若为D3DCREATE_HARDWARE_VERTEXPROCESSING则使用硬件T&L
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, //上面填充的D3D图像显示方法
&pDev ); //要创建的D3D设备
pDev->SetRenderState( D3DRS_LIGHTING, FALSE );
pDev->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD);//设置渲染状态
pDev->SetRenderState( D3DRS_AMBIENT, 0xffffffff );
pDev->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(32, 32, 32));
pDev->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
pDev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
D3DXCreateTextureFromFileEx(pDev, "back.jpg", 1024, 768 , 1, D3DPOOL_DEFAULT,
D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE,
D3DX_FILTER_NONE,D3DCOLOR_XRGB(0,255,0) , NULL, NULL, &BackTex);
D3DXCreateTextureFromFileEx(pDev, "Note.bmp", 45, 765, 1, D3DPOOL_DEFAULT,
D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE,
D3DX_FILTER_NONE,D3DCOLOR_XRGB(0,255,0) , NULL, NULL, &NoteTex);
D3DXCreateSprite(pDev,&lanSpr);
[em24] |
|