C# 夏普DX。不支持的像素格式
我使用SharpDX,但在C# 夏普DX。不支持的像素格式,c#,directx,sharpdx,C#,Directx,Sharpdx,我使用SharpDX,但在像素格式方面有问题。我想让它A8_UNorm并使用OpacityMask但我得到了一个不受支持的IXELFormatException。但根据MSDN,一切都应该是好的。 代码: PixelFormat PF=新的PixelFormat(Format.A8_UNorm,AlphaMode.stright); var desc=new texture2ddedescription() { 宽度=宽度, 高度=高度, Format=Format.A8_UNorm, Samp
像素格式
方面有问题。我想让它A8_UNorm
并使用OpacityMask
但我得到了一个不受支持的IXELFormatException
。但根据MSDN,一切都应该是好的。
代码:
PixelFormat PF=新的PixelFormat(Format.A8_UNorm,AlphaMode.stright);
var desc=new texture2ddedescription()
{
宽度=宽度,
高度=高度,
Format=Format.A8_UNorm,
SampleDescription=新的SampleDescription(1,0),
ArraySize=1,
CpuAccessFlags=0,
用法=ResourceUsage.Default,
MIP级别=1,
BindFlags=BindFlags.RenderTarget | BindFlags.ShaderResource,
};
使用(var d=新数据流(描述宽度*描述高度,真,真))
{
对于(变量i=0;i<描述宽度*描述高度/4;i++)d.Write(0);
使用(Texture2D tex=new Texture2D(GameControl.Device,desc,new DataRectangle(d.DataPointer,desc.Width)))
{
使用(表面温度=tex.QueryInterface())
{
目标=新的RenderTarget(Factory2D、temp、新的RenderTargetProperties(PF));
OpacityMask=新位图(目标、临时、新位图属性(PF));//此处有异常
}
}
}
像素格式支持取决于软件和硬件。您可以使用CheckFormatSupport()
检查您的平台是否支持您想要的内容。我是这样使用它的:
var format = Format.A8_UNorm;
var supportRequired = FormatSupport.RenderTarget;
var isSupported = device.CheckFormatSupport(format).HasFlag(supportRequired);
请注意,除了
格式支持之外,还有许多选项。RenderTarget
,因此请测试您尝试使用的所有选项。像素格式支持取决于软件和硬件。您可以使用CheckFormatSupport()
检查您的平台是否支持您想要的内容。我是这样使用它的:
var format = Format.A8_UNorm;
var supportRequired = FormatSupport.RenderTarget;
var isSupported = device.CheckFormatSupport(format).HasFlag(supportRequired);
请注意,除了FormatSupport.RenderTarget
,还有许多选项,所以请测试您尝试使用的所有选项