2

我开始添加 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;
4

2 回答 2

2

在我看来,该格式已丢失,因此您需要重新排序数据。但是,如果您要使用 RGBA,则不需要像示例那样分离所有颜色,因为 R、G 和 B 仍然连续保持相同的顺序,您可以将这 3 个通道作为一个块移动。

于 2009-03-17T11:23:31.513 回答
1

查看相关的enum type,我(也)找不到任何 AxRxGxBx 格式。所以看来你需要自己做调酒,然后。

这当然非常适合SSE 优化,检查您的编译器是否能够将代码优化为使用 SSE 的东西并且性能应该没问题。

编写此代码时请考虑字节顺序问题,很容易出错,并且如果不关心字节顺序,则很难编写此代码。

于 2009-03-17T11:17:48.797 回答