Directx 从文件post DX11.1加载纹理?

Directx 从文件post DX11.1加载纹理?,directx,textures,directx-11,texture2d,sharpdx,Directx,Textures,Directx 11,Texture2d,Sharpdx,在11.1及更高版本中,Microsoft删除了许多用于加载纹理的帮助程序(fromfile、fromstream等) 我正在尝试将我的代码移植到11.2,除了这一行之外,一切都正常: var texture = Texture2D.FromFile<Texture2D>(device, @"C:\Texture.png"); var texture=Texture2D.FromFile(设备@“C:\texture.png”); 现在我所能找到的只是指导告诉我使用WIC,但我似

在11.1及更高版本中,Microsoft删除了许多用于加载纹理的帮助程序(fromfile、fromstream等)

我正在尝试将我的代码移植到11.2,除了这一行之外,一切都正常:

var texture = Texture2D.FromFile<Texture2D>(device, @"C:\Texture.png");
var texture=Texture2D.FromFile(设备@“C:\texture.png”);
现在我所能找到的只是指导告诉我使用WIC,但我似乎找不到任何能为我提供几乎同样通用的纹理2D的东西(我发现的所有样本都需要以像素格式传递)

我正在寻找一种解决方案,它可以让我加载文件(事先不知道它们的格式或布局),并像允许的FromFile一样从中获得纹理2D。有没有类似的或者很接近的?我假设一定有“某些东西”,因为如果这不是多余的话,他们不会只是不赞成这样的功能

非常感谢您的帮助


编辑:我也不想使用SharpDX.Toolkit,我正在寻找一个原始的DirectX/WIC等解决方案,因为我不想添加对该工具包的依赖。不过,我完全可以添加任何.net Framework 4.0或4.5程序集作为依赖项。

除了自己编写整个WIC互操作之外,没有简单的解决方案。即使您不想使用该工具包,源代码也是可用的,负责解码图像的类也很容易适应


如果您想要一个不处理所有WIC情况(格式映射等)的非常简单的解决方案,您可以看看。

除了自己编写整个WIC互操作之外,没有简单的解决方案。即使您不想使用该工具包,源代码也是可用的,负责解码图像的类也很容易适应


如果您想要一个不处理所有WIC情况(格式映射…等)的非常简单的解决方案,您可以看看。

如果您有一个
纹理2D
和一个WPF
位图图像
,类似的东西将有助于:

  var map = device.ImmediateContext.MapSubresource(texture, 0, MapMode.WriteDiscard, MapFlags.None);
  bitmap.CopyPixels(Int32Rect.Empty, map.DataPointer, bitmap.PixelWidth * bitmap.PixelHeight * 4, bitmap.PixelWidth * 4);
  device.ImmediateContext.UnmapSubresource(source, 0);
你提到的功能在引擎盖下可能相当类似


如果您不确定位图是否为Bgra,则必须首先对其进行转换。

如果您同时拥有
纹理2D
和WPF
位图图像
,类似的操作将有助于:

  var map = device.ImmediateContext.MapSubresource(texture, 0, MapMode.WriteDiscard, MapFlags.None);
  bitmap.CopyPixels(Int32Rect.Empty, map.DataPointer, bitmap.PixelWidth * bitmap.PixelHeight * 4, bitmap.PixelWidth * 4);
  device.ImmediateContext.UnmapSubresource(source, 0);
你提到的功能在引擎盖下可能相当类似


如果您不确定位图是否为Bgra,则必须先将其转换。

您使用什么编程语言?是VB.net吗?不确定这有什么关系,但我用的是C#你用什么编程语言?是VB.net吗?我不确定这有什么关系,但我使用的是C#看起来像我需要的,默认情况下它会处理什么样的格式?任何格式32bppprgba或仅位图?(这会自动加载png gif jpeg等吗?)。还可以用WIC或标准格式加载任意数据吗?(如果我有一个每像素128位数据的数组,没有标题,内存中什么都没有,我可以不通过标准格式将其转换为texture2D吗?)只有格式32BPPPRGBA和WIC支持的文件格式。若要加载任意原始数据,请在创建时直接使用数据初始化纹理。看起来就像我需要的一样,默认情况下将处理什么样的格式?任何格式32bppprgba或仅位图?(这会自动加载png gif jpeg等吗?)。还可以用WIC或标准格式加载任意数据吗?(如果我有一个每像素128位数据的数组,没有标题,内存中什么都没有,我可以不通过标准格式将其转换为texture2D吗?)只有格式32BPPPRGBA和WIC支持的文件格式。若要加载任意原始数据,请在创建时直接使用数据初始化纹理。