456
社区成员
发帖
与我相关
我的任务
分享
// 创建 D3D 设备的参数:
D3DPP.BackBufferCount = 1;
D3DPP.BackBufferFormat = D3DFMT_A8R8G8B8;
D3DPP.BackBufferWidth = uWidth;
D3DPP.BackBufferHeight = uHeight;
D3DPP.hDeviceWindow = hWnd;
D3DPP.Windowed = (bFullscreen ? FALSE : TRUE);
D3DPP.PresentationInterval = (bVSync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE);
D3DPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
D3DPP.EnableAutoDepthStencil = TRUE;
D3DPP.AutoDepthStencilFormat = D3DFMT_D24S8;
D3DPP.MultiSampleType = MultiSampleType;
D3DPP.MultiSampleQuality = uMultiSampleQuality;
// D3D 设备的渲染状态相关设置:
SetRenderState(D3DRS_LIGHTING, TRUE);
SetRenderState(D3DRS_SPECULARENABLE, TRUE);
SetRenderState(D3DRS_NORMALIZENORMALS, TRUE);
SetRenderState(D3DRS_ZENABLE, TRUE);
SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
// 清除屏幕缓存相关代码:
if (SUCCEEDED(m_pD3DDevice9->Clear(
0,
NULL,
D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
ClearColor,
1.0f,
0)))
{
bRet = true;
}
// 设置 D3D 透视投影与摄像机相关参数
CGraphDevice::Get()->SetViewTransform(
// Eye
0, 0, -10,
// Target
0, 0, 0,
// Up
0, 1, 0);
CGraphDevice::Get()->SetPerspectiveTransform(
// FOV
3.141592627f * 0.5f,
// Acspect
SCREEN_WIDTH,
SCREEN_HEIGHT,
// Near Far
20,
0);
// 启用一个平行光源
CGraphDevice::Get()->SetDirectionLightParam(0, 1.0, -1.0, 1.0, 0xFFFFFFFF);
CGraphDevice::Get()->EnableLight(0, true);