我开始为我现有的d3d9图形后端添加d3d10支持。
问题在于所有现有的代码(在几个应用程序中...)使用ARGB格式的颜色,但是我找不到与d3d10匹配的格式模式。是d3d10根本不支持ARGB颜色格式,还是我错过了什么?如果我没有错过什么是在它们之间转换的好方法,它只需要将第一个字节移到末尾,这看起来是一个非常简单的概念,但是我看不出除了将颜色分解成组件并重建it...eg之外还能做什么:
//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;发布于 2009-03-17 11:17:49
查看相关的enum type,我(也)找不到任何AxRxGxBx格式。所以看起来你需要自己去喝水了。
这是非常适合SSE optimization的当然,检查你的编译器是否能够将代码优化成使用SSE的东西,性能应该是好的。
在编写此代码时,请考虑字符顺序问题,这很容易出错,如果不考虑字符顺序,则很难编写此代码。
发布于 2009-03-17 11:23:32
在我看来,该格式丢失了,因此您需要重新排序您的数据。然而,如果你打算使用RGBA,你不需要像你的例子那样分离所有的颜色,因为R,G和B仍然是连续的相同顺序,你可以将这3个通道作为一个块移动。
https://stackoverflow.com/questions/653787
复制相似问题