带因子的乘法位(GLSL)

时间:2017-02-01 09:41:23

标签: glsl opengl-es-2.0 glsles

我想要一个方法,将一个数字中的每个位与一个因子相乘。例如,如果因子是3,则在使用该数字的下一位之前,该数字中的每个位使用三次。 我正在使用GLSL。

1 个答案:

答案 0 :(得分:0)

用C#

做了吗
private int DuplicateBitsByFactor(int value, int factor)
    {
        var size = sizeof(ushort) * 8;
        var binaryString = new StringBuilder();

        for (var i = size; i >= 0; i--)
            for (var j = 0; j < factor; j++)
                binaryString.Append(GetBitOnLocation(value, i));

        var duplicateBitsByFactor = Convert.ToInt32(binaryString.ToString(), 2);
        return duplicateBitsByFactor;
    }

    private int GetBitOnLocation(int value, int location)
    {
        return (value & (1 << location)) == 0 ? 0 : 1;
    }

任何优化?