+ -
当前位置:首页 → 问答吧 → d3d贴图,部分机器有锯齿,部分平滑显示

d3d贴图,部分机器有锯齿,部分平滑显示

时间:2011-08-09

来源:互联网

同样的代码到7台不同的机器上,4台显示有锯齿,3台平滑显示。
平滑显示效果:


出现锯齿:



该代码取显卡支持的最大抗锯齿模式:
C/C++ code
    DWORD dwQualityLevel = 0, dwQualityLevelDepth = 0;

    for (int i = D3DMULTISAMPLE_16_SAMPLES; i > D3DMULTISAMPLE_NONE; --i)
    {
        if(    SUCCEEDED(d3d9->CheckDeviceMultiSampleType(    D3DADAPTER_DEFAULT,
            D3DDEVTYPE_HAL,
            D3DFMT_A8R8G8B8,
            windowed,
            (D3DMULTISAMPLE_TYPE)i,
            &dwQualityLevel)) &&
            SUCCEEDED(d3d9->CheckDeviceMultiSampleType(    D3DADAPTER_DEFAULT,
            D3DDEVTYPE_HAL,
            D3DFMT_D24S8,
            windowed,
            (D3DMULTISAMPLE_TYPE)i,
            &dwQualityLevelDepth)))
        {
            d3dpp.MultiSampleType = (D3DMULTISAMPLE_TYPE)i;
            d3dpp.MultiSampleQuality = min(dwQualityLevel, dwQualityLevelDepth) - 1;
            cout<<"Support multi sample level "<<i<<", quality level "<<dwQualityLevel<<","<<dwQualityLevelDepth<<endl;

            break;
        }
    }

    hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT, deviceType, hwnd, vp, &d3dpp, device);


问题是同样的MultiSampleType=8,MultiSampleQuality =2的机器有的能平滑,有的有锯齿,
而有的MultiSampleQuality=4,MultiSampleQuality =0的机器却能平滑显示贴图。
这是什么原因呢?

源码:http://download.csdn.net/source/3508056

作者: huangzeyy   发布时间: 2011-08-09

要根据实际的显卡来设置多重采样

作者: ilysony   发布时间: 2011-08-10