目前,我正在尝试以下列方式以编程方式创建纹理: 我有一个十六进制的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
占用一位,所以我猜这种程序类似的东西是可能的。
答案 0 :(得分:0)
Direct3D不支持1位格式。 {3}格式是为Direct3D 10时代的早期GDI字体支持而创建的,但任何Direct3D硬件都不支持格式本身。
关于您可以找到的最小格式是DXGI_FORMAT_R1_UNORM
,您可以将1s扩展为255字节并将0保持为0字节。
对于处理原始像素格式的一堆代码,请查看DirectXTex。那里有一些代码用于扩展Convert代码库中的
DXGI_FORMAT_R8_UNORM
等单色格式。