Direct3d是否支持这种纹理化方式?

时间:2017-07-10 21:28:16

标签: arrays textures direct3d

目前,我正在尝试以下列方式以编程方式创建纹理: 我有一个十六进制的1维数组:

      char array = { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f }

我希望使用构成此数组的来创建此纹理,因为F = 1111和7 = 0111二进制,依此类推。在视觉上,它看起来像这样:

    1  1  1  1  1  1  1  0
    1  1  1  1  1  1  0  1
    1  1  1  1  1  0  1  1
    1  1  1  1  0  1  1  1
    1  1  1  0  1  1  1  1
    1  1  0  1  1  1  1  1
    1  0  1  1  1  1  1  1
    0  1  1  1  1  1  1  1

基本上,数组的每个元素都代表一行,构成其中一个字符的八个位中的每一个都代表元素。 0代表未填充,1代表“已填充”。然后我会根据一些外部机制应用颜色。我在MSDN上找到了这个DXGI_format:

    DXGI_FORMAT_R1_UNORM

占用一位,所以我猜这种程序类似的东西是可能的。

1 个答案:

答案 0 :(得分:0)

Direct3D不支持1位格式。 {3}格式是为Direct3D 10时代的早期GDI字体支持而创建的,但任何Direct3D硬件都不支持格式本身。

关于您可以找到的最小格式是DXGI_FORMAT_R1_UNORM,您可以将1s扩展为255字节并将0保持为0字节。

  

对于处理原始像素格式的一堆代码,请查看DirectXTex。那里有一些代码用于扩展Convert代码库中的DXGI_FORMAT_R8_UNORM等单色格式。