direct3d功能不可用:Direct3D设备功能的检查代码



检验Device能力过程:(伪代码).仅列出了主要使用,或内主要参数.

foreach(adapterinManager.Adapters)
{
//获取显示模式和适配器格式
foreach(allowedFormats)//适配器格式见后
{
foereach(DisplayModeinadapter.SupportedDisplayModes[allowedFormats[i]])
如果有效,添加到DisplayModeList,adapterFormatList;
}

foreach(DeviceType)//设备类型见后
{
Caps=Manager.GetDeviceCaps(adapter,DeviceType);
//检查设备类型
foreach(adapterFormat)//由上得到适配器格式
foreach(backbufferFormat)//后缓存Cache格式见后
foreach(windowed)//window模式或全屏模式
{
Manager.CheckDeviceType(adapter,DeviceType,adapter,backbufferFormat,windowed);
//是否支持像素着色后混合?也就是alpha测试,像素雾,渲染目标混合,颜色写等支持
Manager.ChechDeviceFormat(adapter,DeviceType,adapter,Usage.QueryPostPixelShaderBlending,Resource.Textures,backbufferFormat
}
//检查深度模板格式 [Page]
foreach(depthStencil//possibleDepthStencilFormat)//深度和模板格式见后
{
Manager.CheckDeviceFormat(adapter,DeviceType,adapterFormat,Usage.DepthStencil,ResourceType.Surface,depthStencil);
Manager.CheckDepthStencilMatch(adapter,DeviceType,adapter,backbufferFormat,depthStencil);
}
//检查multisample类型
foreach(multiSampleType//possibleMultiSampleType)//multisample类型见后
{
Manager.CheckDeviceMultiSampleType(adapter,DeviceType,backBufferFormat,windowed,multiSampleType);
}
//检查深度模板格式和multisample类型是否冲突
foreach(depthStencil//possibleDepthStencilFormat)//由上得到深度模板格式
foreach(multiSampleType//possibleMultiSampleType)//multisample类型
{
Manager.CheckDeviceMultiSampleType(adapter,DeviceType,depthStencil,windowed,multiSampleType);
}


//检查渲染间隔 [Page]
foreach(presentInterval)//渲染间隔值见后
{
(isWindowed)不支持PresentInterval.Two,Three,Four.
(PresentInterval.Default||Device.Caps.PresentationIntervals&presentInterval)支持;
}
}
}
适配器格式:Format.X8R8G8B8,
Format.X1R5G5B5,
Format.R5G6B5,
Format.A2R10G10B10
设备类型:DeviceType.Hardware,
DeviceType.Software,
DeviceType.Reference
后缓存Cache格式:Format.A8R8G8B8,
Format.X8R8G8B8,
Format.A1R5G5B5,
Format.X1R5G5B5,
Format.R5G6B5, [Page]
Format.A2R10G10B10
深度和模板格式:DepthFormat.D16,
DepthFormat.D15S1,
DepthFormat.D24X8,
DepthFormat.D24S8,
DepthFormat.D24X4S4,
DepthFormat.D32
multisample类型:MultiSampleType.None, [Page]


MultiSampleType.NonMaskable,
MultiSampleType.TwoSamples,
MultiSampleType.ThreeSamples,
MultiSampleType.FourSamples,
MultiSampleType.FiveSamples,
MultiSampleType.SixSamples,
MultiSampleType.SevenSamples, [Page]
MultiSampleType.EightSamples,
MultiSampleType.NineSamples,
MultiSampleType.TenSamples,
MultiSampleType.ElevenSamples,
MultiSampleType.TwelveSamples,
MultiSampleType.ThirteenSamples,


MultiSampleType.FourteenSamples, [Page]
MultiSampleType.FteenSamples,
MultiSampleType.SixteenSamples
渲染间隔值:PresentInterval.Immediate,
PresentInterval.Default,
PresentInterval.One,
PresentInterval.Two,
PresentInterval.Three, [Page]
PresentInterval.Four
Tags:  direct3d加速 direct3d direct3d设备 direct3d功能不可用

延伸阅读

最新评论

发表评论