我正在制作基于精灵的格斗游戏,并且开发已经到了一定程度,我想在运行时实现图像的颜色交换(因此用户可以通过界面指定,应该将确切的颜色更改为什么,它会在瞬间完成,不会被加载屏幕中断)。我认为它在像素着色器中很容易实现。我试过了,通过设置值来专门改变另一种颜色,效果很好。对于下一步,我想让它从文本文件中读出数据(包含要更改的颜色的颜色代码,然后是要更改的颜色)。它有几个条目,它存储在一个数组中,如下所示:
XMFLOAT3 palette[10][2];
这是着色器中相应的常量条目:
float4 xPalette[10][2];
这意味着,它存储了 10 种颜色来改变和 10 种颜色来改变它们。我通过一个常量缓冲区将它传递给像素着色器,但它没有按计划工作,因为只有数组的最后一个条目被识别,其他所有条目都是零。我认为这是因为在将数据发送到 GPU 之前进行了 16 位对齐?还有什么其他方法可以将这样的数据发送到像素着色器?感谢您阅读本文!