怎么判断显卡是否支持D3DCREATE_HARDWARE_VERTEXPROCESSING
是不是可能有些功能支持硬件处理,有些不支持
所以所有用到的功能,要D3DCAPS9对应的参数都支持,才可以?
[解决办法]
就是不同显卡之间的硬件能力是不同的, 到底如何可以看 D3DCAPS9 这个结构里面的说明
差异会在很多地方体现的, 比如最大灯光数量, 最多clip面数量等等
dxsdk里面同时也提供了一个工具, DirectX Caps View 可以直接看到你的电脑上显卡的硬件能力如何
dxsdk里面提供的很多函数都是有返回数值的, 按照ms的描述, 你是应该检查这些操作是否成功的
这些操作是否成功往往也是和显卡的硬件能力有关系
好的程序是应该在执行操作之前测试硬件是否支持你要使用的功能的,或者提供补救的方法
[解决办法]
g_d3d9 = Direct3DCreate9(D3D_SDK_VERSION);
D3DCAPS9 caps;
int vp;
HRESULT hr;
hr = g_d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
if (FAILED(hr))
{
return FALSE;
}
if (caps.DevCaps && D3DDEVCAPS_HWTRANSFORMANDLIGHT)
{
vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}