我开始添加 d3d10 支持以配合我现有的 d3d9 图形后端。
问题是所有现有代码(在多个应用程序中......)都使用 ARGB 格式的颜色,但是我找不到与 d3d10 匹配的格式模式。 d3d10 根本不支持 ARGB 颜色格式还是我错过了一些东西?如果我没有错过什么是在它们之间进行转换的好方法,它只需要将第一个字节移到末尾,这似乎是一个非常简单的概念,但是除了将颜色分解为其组件之外,我看不到其他方法并重建它...例如:
//unsigned colIn, colOut
unsigned char
a = (colIn & 0xFF000000) >> 24,
r = (colIn & 0x00FF0000) >> 16,
g = (colIn & 0x0000FF00) >> 8,
b = (colIn & 0x000000FF);
colOut = (r << 24) | (g << 16) | (b << 8) | a;
最佳答案
在我看来,该格式已丢失,因此您需要重新排序数据。但是,如果您要使用 RGBA,则不需要像示例那样分离所有颜色,因为 R、G 和 B 仍然连续处于相同的顺序,您可以将这 3 个 channel 作为一个 block 移动。
关于c++ - Direct3D10:没有 32 位 ARGB 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653787/