Как использовать битовые операции в GLSL 1.3 с OpenGL 2.1

Я пытаюсь написать шейдер, который использует много битовых операций. На самом деле они поддерживаются начиная с glsl 1.30, но я использую только OpenGL 2.1.

Есть ли способ использовать битовые операции с моей версией OpenGL?

3 ответа

Решение

Все совместимое с SM3 (~OpenGL 2.1) оборудование поддерживает ограниченную целочисленную функциональность. Обычно это делается путем эмуляции целых чисел с плавающей точкой и не включает битовые операции.

Для битовых операций вам потребуется либо GLSL 1.3, либо EXT_gpu_shader4.

Если причина, по которой у вас есть только OpenGL 2.1, заключается в том, что ваш драйвер несколько устарел, возможно, вам повезет, что у вас все еще есть EXT_gpu_shader4 (хотя обновление драйверов может быть хорошей идеей в этом случае).

Если причина в том, что ваша видеокарта просто не поддерживает ничего лучше, вам не повезло.

Если у вас есть EXT_gpu_shader4 (проверьте строку расширения), вы можете добавить:

#extension EXT_gpu_shader4 : require

к вашим шейдерам GLSL 1.2, и это должно работать.

Это должно помочь вам начать.

lowp ivec4 imod4_2(lowp ivec4 x)
{
  return x - (2 * (x/2));
}

lowp ivec4 parselowbits(lowp int x)
{
  // Implement (x % y) where y is known to be the constant 2
  // by first dividing x by (8, 4, 2, 1) and then doing a mod
  // by (2, 2, 2, 2) to generate an int vector.

  lowp ivec4 numerator = ivec4(x);
  lowp ivec4 denominator = ivec4(8, 4, 2, 1);
  lowp ivec4 modNumerator = numerator / denominator;
  lowp ivec4 modResult = imod4_2(modNumerator);

  return modResult;
}

lowp ivec4 parsehighbits(lowp int x)
{
  // Implement (x % y) where y is known to be the constant 2
  // by first dividing by (8*16, 4*16, 2*16, 1*16) and then doing a mod
  // by (2, 2, 2, 2) to generate an int vector.

  lowp ivec4 numerator = ivec4(x);
  lowp ivec4 denominator = ivec4(8*16, 4*16, 2*16, 1*16);
  lowp ivec4 modNumerator = numerator / denominator;
  lowp ivec4 modResult = imod4_2(modNumerator);

  return modResult;
}

Вышеуказанные функции работают на верхнем и нижнем полубайтах (4 бита) компонента, такого как.r.g входного вектора. Вам, конечно, нужно будет прочитать значения и умножить их на 255, чтобы денормализовать. Тогда реализовать AND легко:

lowp ivec4 and4(lowp ivec4 a, lowp ivec4 b)
{
 lowp ivec4 a_and_b = a * b;
 return a_and_b;
}

Если вы хотите побитовое И(A & B) == B, вот действительно тупое решение, которое работает (до значений 255):

      bool bitMaskCheck(float value, float check){
    return (check == 1.0 &&
            (value == 1.0 ||
             value == 3.0 ||
             value == 5.0 ||
             value == 7.0 ||
             value == 9.0 ||
             value == 11.0 ||
             value == 13.0 ||
             value == 15.0 ||
             value == 17.0 ||
             value == 19.0 ||
             value == 21.0 ||
             value == 23.0 ||
             value == 25.0 ||
             value == 27.0 ||
             value == 29.0 ||
             value == 31.0 ||
             value == 33.0 ||
             value == 35.0 ||
             value == 37.0 ||
             value == 39.0 ||
             value == 41.0 ||
             value == 43.0 ||
             value == 45.0 ||
             value == 47.0 ||
             value == 49.0 ||
             value == 51.0 ||
             value == 53.0 ||
             value == 55.0 ||
             value == 57.0 ||
             value == 59.0 ||
             value == 61.0 ||
             value == 63.0 ||
             value == 65.0 ||
             value == 67.0 ||
             value == 69.0 ||
             value == 71.0 ||
             value == 73.0 ||
             value == 75.0 ||
             value == 77.0 ||
             value == 79.0 ||
             value == 81.0 ||
             value == 83.0 ||
             value == 85.0 ||
             value == 87.0 ||
             value == 89.0 ||
             value == 91.0 ||
             value == 93.0 ||
             value == 95.0 ||
             value == 97.0 ||
             value == 99.0 ||
             value == 101.0 ||
             value == 103.0 ||
             value == 105.0 ||
             value == 107.0 ||
             value == 109.0 ||
             value == 111.0 ||
             value == 113.0 ||
             value == 115.0 ||
             value == 117.0 ||
             value == 119.0 ||
             value == 121.0 ||
             value == 123.0 ||
             value == 125.0 ||
             value == 127.0 ||
             value == 129.0 ||
             value == 131.0 ||
             value == 133.0 ||
             value == 135.0 ||
             value == 137.0 ||
             value == 139.0 ||
             value == 141.0 ||
             value == 143.0 ||
             value == 145.0 ||
             value == 147.0 ||
             value == 149.0 ||
             value == 151.0 ||
             value == 153.0 ||
             value == 155.0 ||
             value == 157.0 ||
             value == 159.0 ||
             value == 161.0 ||
             value == 163.0 ||
             value == 165.0 ||
             value == 167.0 ||
             value == 169.0 ||
             value == 171.0 ||
             value == 173.0 ||
             value == 175.0 ||
             value == 177.0 ||
             value == 179.0 ||
             value == 181.0 ||
             value == 183.0 ||
             value == 185.0 ||
             value == 187.0 ||
             value == 189.0 ||
             value == 191.0 ||
             value == 193.0 ||
             value == 195.0 ||
             value == 197.0 ||
             value == 199.0 ||
             value == 201.0 ||
             value == 203.0 ||
             value == 205.0 ||
             value == 207.0 ||
             value == 209.0 ||
             value == 211.0 ||
             value == 213.0 ||
             value == 215.0 ||
             value == 217.0 ||
             value == 219.0 ||
             value == 221.0 ||
             value == 223.0 ||
             value == 225.0 ||
             value == 227.0 ||
             value == 229.0 ||
             value == 231.0 ||
             value == 233.0 ||
             value == 235.0 ||
             value == 237.0 ||
             value == 239.0 ||
             value == 241.0 ||
             value == 243.0 ||
             value == 245.0 ||
             value == 247.0 ||
             value == 249.0 ||
             value == 251.0 ||
             value == 253.0 ||
             value == 255.0)) ||
           (check == 2.0 &&
            (value == 2.0 ||
             value == 3.0 ||
             value == 6.0 ||
             value == 7.0 ||
             value == 10.0 ||
             value == 11.0 ||
             value == 14.0 ||
             value == 15.0 ||
             value == 18.0 ||
             value == 19.0 ||
             value == 22.0 ||
             value == 23.0 ||
             value == 26.0 ||
             value == 27.0 ||
             value == 30.0 ||
             value == 31.0 ||
             value == 34.0 ||
             value == 35.0 ||
             value == 38.0 ||
             value == 39.0 ||
             value == 42.0 ||
             value == 43.0 ||
             value == 46.0 ||
             value == 47.0 ||
             value == 50.0 ||
             value == 51.0 ||
             value == 54.0 ||
             value == 55.0 ||
             value == 58.0 ||
             value == 59.0 ||
             value == 62.0 ||
             value == 63.0 ||
             value == 66.0 ||
             value == 67.0 ||
             value == 70.0 ||
             value == 71.0 ||
             value == 74.0 ||
             value == 75.0 ||
             value == 78.0 ||
             value == 79.0 ||
             value == 82.0 ||
             value == 83.0 ||
             value == 86.0 ||
             value == 87.0 ||
             value == 90.0 ||
             value == 91.0 ||
             value == 94.0 ||
             value == 95.0 ||
             value == 98.0 ||
             value == 99.0 ||
             value == 102.0 ||
             value == 103.0 ||
             value == 106.0 ||
             value == 107.0 ||
             value == 110.0 ||
             value == 111.0 ||
             value == 114.0 ||
             value == 115.0 ||
             value == 118.0 ||
             value == 119.0 ||
             value == 122.0 ||
             value == 123.0 ||
             value == 126.0 ||
             value == 127.0 ||
             value == 130.0 ||
             value == 131.0 ||
             value == 134.0 ||
             value == 135.0 ||
             value == 138.0 ||
             value == 139.0 ||
             value == 142.0 ||
             value == 143.0 ||
             value == 146.0 ||
             value == 147.0 ||
             value == 150.0 ||
             value == 151.0 ||
             value == 154.0 ||
             value == 155.0 ||
             value == 158.0 ||
             value == 159.0 ||
             value == 162.0 ||
             value == 163.0 ||
             value == 166.0 ||
             value == 167.0 ||
             value == 170.0 ||
             value == 171.0 ||
             value == 174.0 ||
             value == 175.0 ||
             value == 178.0 ||
             value == 179.0 ||
             value == 182.0 ||
             value == 183.0 ||
             value == 186.0 ||
             value == 187.0 ||
             value == 190.0 ||
             value == 191.0 ||
             value == 194.0 ||
             value == 195.0 ||
             value == 198.0 ||
             value == 199.0 ||
             value == 202.0 ||
             value == 203.0 ||
             value == 206.0 ||
             value == 207.0 ||
             value == 210.0 ||
             value == 211.0 ||
             value == 214.0 ||
             value == 215.0 ||
             value == 218.0 ||
             value == 219.0 ||
             value == 222.0 ||
             value == 223.0 ||
             value == 226.0 ||
             value == 227.0 ||
             value == 230.0 ||
             value == 231.0 ||
             value == 234.0 ||
             value == 235.0 ||
             value == 238.0 ||
             value == 239.0 ||
             value == 242.0 ||
             value == 243.0 ||
             value == 246.0 ||
             value == 247.0 ||
             value == 250.0 ||
             value == 251.0 ||
             value == 254.0 ||
             value == 255.0)) ||
           (check == 4.0 &&
            (value == 4.0 ||
             value == 5.0 ||
             value == 6.0 ||
             value == 7.0 ||
             value == 12.0 ||
             value == 13.0 ||
             value == 14.0 ||
             value == 15.0 ||
             value == 20.0 ||
             value == 21.0 ||
             value == 22.0 ||
             value == 23.0 ||
             value == 28.0 ||
             value == 29.0 ||
             value == 30.0 ||
             value == 31.0 ||
             value == 36.0 ||
             value == 37.0 ||
             value == 38.0 ||
             value == 39.0 ||
             value == 44.0 ||
             value == 45.0 ||
             value == 46.0 ||
             value == 47.0 ||
             value == 52.0 ||
             value == 53.0 ||
             value == 54.0 ||
             value == 55.0 ||
             value == 60.0 ||
             value == 61.0 ||
             value == 62.0 ||
             value == 63.0 ||
             value == 68.0 ||
             value == 69.0 ||
             value == 70.0 ||
             value == 71.0 ||
             value == 76.0 ||
             value == 77.0 ||
             value == 78.0 ||
             value == 79.0 ||
             value == 84.0 ||
             value == 85.0 ||
             value == 86.0 ||
             value == 87.0 ||
             value == 92.0 ||
             value == 93.0 ||
             value == 94.0 ||
             value == 95.0 ||
             value == 100.0 ||
             value == 101.0 ||
             value == 102.0 ||
             value == 103.0 ||
             value == 108.0 ||
             value == 109.0 ||
             value == 110.0 ||
             value == 111.0 ||
             value == 116.0 ||
             value == 117.0 ||
             value == 118.0 ||
             value == 119.0 ||
             value == 124.0 ||
             value == 125.0 ||
             value == 126.0 ||
             value == 127.0 ||
             value == 132.0 ||
             value == 133.0 ||
             value == 134.0 ||
             value == 135.0 ||
             value == 140.0 ||
             value == 141.0 ||
             value == 142.0 ||
             value == 143.0 ||
             value == 148.0 ||
             value == 149.0 ||
             value == 150.0 ||
             value == 151.0 ||
             value == 156.0 ||
             value == 157.0 ||
             value == 158.0 ||
             value == 159.0 ||
             value == 164.0 ||
             value == 165.0 ||
             value == 166.0 ||
             value == 167.0 ||
             value == 172.0 ||
             value == 173.0 ||
             value == 174.0 ||
             value == 175.0 ||
             value == 180.0 ||
             value == 181.0 ||
             value == 182.0 ||
             value == 183.0 ||
             value == 188.0 ||
             value == 189.0 ||
             value == 190.0 ||
             value == 191.0 ||
             value == 196.0 ||
             value == 197.0 ||
             value == 198.0 ||
             value == 199.0 ||
             value == 204.0 ||
             value == 205.0 ||
             value == 206.0 ||
             value == 207.0 ||
             value == 212.0 ||
             value == 213.0 ||
             value == 214.0 ||
             value == 215.0 ||
             value == 220.0 ||
             value == 221.0 ||
             value == 222.0 ||
             value == 223.0 ||
             value == 228.0 ||
             value == 229.0 ||
             value == 230.0 ||
             value == 231.0 ||
             value == 236.0 ||
             value == 237.0 ||
             value == 238.0 ||
             value == 239.0 ||
             value == 244.0 ||
             value == 245.0 ||
             value == 246.0 ||
             value == 247.0 ||
             value == 252.0 ||
             value == 253.0 ||
             value == 254.0 ||
             value == 255.0)) ||
           (check == 8.0 &&
            (value == 8.0 ||
             value == 9.0 ||
             value == 10.0 ||
             value == 11.0 ||
             value == 12.0 ||
             value == 13.0 ||
             value == 14.0 ||
             value == 15.0 ||
             value == 24.0 ||
             value == 25.0 ||
             value == 26.0 ||
             value == 27.0 ||
             value == 28.0 ||
             value == 29.0 ||
             value == 30.0 ||
             value == 31.0 ||
             value == 40.0 ||
             value == 41.0 ||
             value == 42.0 ||
             value == 43.0 ||
             value == 44.0 ||
             value == 45.0 ||
             value == 46.0 ||
             value == 47.0 ||
             value == 56.0 ||
             value == 57.0 ||
             value == 58.0 ||
             value == 59.0 ||
             value == 60.0 ||
             value == 61.0 ||
             value == 62.0 ||
             value == 63.0 ||
             value == 72.0 ||
             value == 73.0 ||
             value == 74.0 ||
             value == 75.0 ||
             value == 76.0 ||
             value == 77.0 ||
             value == 78.0 ||
             value == 79.0 ||
             value == 88.0 ||
             value == 89.0 ||
             value == 90.0 ||
             value == 91.0 ||
             value == 92.0 ||
             value == 93.0 ||
             value == 94.0 ||
             value == 95.0 ||
             value == 104.0 ||
             value == 105.0 ||
             value == 106.0 ||
             value == 107.0 ||
             value == 108.0 ||
             value == 109.0 ||
             value == 110.0 ||
             value == 111.0 ||
             value == 120.0 ||
             value == 121.0 ||
             value == 122.0 ||
             value == 123.0 ||
             value == 124.0 ||
             value == 125.0 ||
             value == 126.0 ||
             value == 127.0 ||
             value == 136.0 ||
             value == 137.0 ||
             value == 138.0 ||
             value == 139.0 ||
             value == 140.0 ||
             value == 141.0 ||
             value == 142.0 ||
             value == 143.0 ||
             value == 152.0 ||
             value == 153.0 ||
             value == 154.0 ||
             value == 155.0 ||
             value == 156.0 ||
             value == 157.0 ||
             value == 158.0 ||
             value == 159.0 ||
             value == 168.0 ||
             value == 169.0 ||
             value == 170.0 ||
             value == 171.0 ||
             value == 172.0 ||
             value == 173.0 ||
             value == 174.0 ||
             value == 175.0 ||
             value == 184.0 ||
             value == 185.0 ||
             value == 186.0 ||
             value == 187.0 ||
             value == 188.0 ||
             value == 189.0 ||
             value == 190.0 ||
             value == 191.0 ||
             value == 200.0 ||
             value == 201.0 ||
             value == 202.0 ||
             value == 203.0 ||
             value == 204.0 ||
             value == 205.0 ||
             value == 206.0 ||
             value == 207.0 ||
             value == 216.0 ||
             value == 217.0 ||
             value == 218.0 ||
             value == 219.0 ||
             value == 220.0 ||
             value == 221.0 ||
             value == 222.0 ||
             value == 223.0 ||
             value == 232.0 ||
             value == 233.0 ||
             value == 234.0 ||
             value == 235.0 ||
             value == 236.0 ||
             value == 237.0 ||
             value == 238.0 ||
             value == 239.0 ||
             value == 248.0 ||
             value == 249.0 ||
             value == 250.0 ||
             value == 251.0 ||
             value == 252.0 ||
             value == 253.0 ||
             value == 254.0 ||
             value == 255.0)) ||
           (check == 16.0 &&
            (value == 16.0 ||
             value == 17.0 ||
             value == 18.0 ||
             value == 19.0 ||
             value == 20.0 ||
             value == 21.0 ||
             value == 22.0 ||
             value == 23.0 ||
             value == 24.0 ||
             value == 25.0 ||
             value == 26.0 ||
             value == 27.0 ||
             value == 28.0 ||
             value == 29.0 ||
             value == 30.0 ||
             value == 31.0 ||
             value == 48.0 ||
             value == 49.0 ||
             value == 50.0 ||
             value == 51.0 ||
             value == 52.0 ||
             value == 53.0 ||
             value == 54.0 ||
             value == 55.0 ||
             value == 56.0 ||
             value == 57.0 ||
             value == 58.0 ||
             value == 59.0 ||
             value == 60.0 ||
             value == 61.0 ||
             value == 62.0 ||
             value == 63.0 ||
             value == 80.0 ||
             value == 81.0 ||
             value == 82.0 ||
             value == 83.0 ||
             value == 84.0 ||
             value == 85.0 ||
             value == 86.0 ||
             value == 87.0 ||
             value == 88.0 ||
             value == 89.0 ||
             value == 90.0 ||
             value == 91.0 ||
             value == 92.0 ||
             value == 93.0 ||
             value == 94.0 ||
             value == 95.0 ||
             value == 112.0 ||
             value == 113.0 ||
             value == 114.0 ||
             value == 115.0 ||
             value == 116.0 ||
             value == 117.0 ||
             value == 118.0 ||
             value == 119.0 ||
             value == 120.0 ||
             value == 121.0 ||
             value == 122.0 ||
             value == 123.0 ||
             value == 124.0 ||
             value == 125.0 ||
             value == 126.0 ||
             value == 127.0 ||
             value == 144.0 ||
             value == 145.0 ||
             value == 146.0 ||
             value == 147.0 ||
             value == 148.0 ||
             value == 149.0 ||
             value == 150.0 ||
             value == 151.0 ||
             value == 152.0 ||
             value == 153.0 ||
             value == 154.0 ||
             value == 155.0 ||
             value == 156.0 ||
             value == 157.0 ||
             value == 158.0 ||
             value == 159.0 ||
             value == 176.0 ||
             value == 177.0 ||
             value == 178.0 ||
             value == 179.0 ||
             value == 180.0 ||
             value == 181.0 ||
             value == 182.0 ||
             value == 183.0 ||
             value == 184.0 ||
             value == 185.0 ||
             value == 186.0 ||
             value == 187.0 ||
             value == 188.0 ||
             value == 189.0 ||
             value == 190.0 ||
             value == 191.0 ||
             value == 208.0 ||
             value == 209.0 ||
             value == 210.0 ||
             value == 211.0 ||
             value == 212.0 ||
             value == 213.0 ||
             value == 214.0 ||
             value == 215.0 ||
             value == 216.0 ||
             value == 217.0 ||
             value == 218.0 ||
             value == 219.0 ||
             value == 220.0 ||
             value == 221.0 ||
             value == 222.0 ||
             value == 223.0 ||
             value == 240.0 ||
             value == 241.0 ||
             value == 242.0 ||
             value == 243.0 ||
             value == 244.0 ||
             value == 245.0 ||
             value == 246.0 ||
             value == 247.0 ||
             value == 248.0 ||
             value == 249.0 ||
             value == 250.0 ||
             value == 251.0 ||
             value == 252.0 ||
             value == 253.0 ||
             value == 254.0 ||
             value == 255.0)) ||
           (check == 32.0 &&
            (value == 32.0 ||
             value == 33.0 ||
             value == 34.0 ||
             value == 35.0 ||
             value == 36.0 ||
             value == 37.0 ||
             value == 38.0 ||
             value == 39.0 ||
             value == 40.0 ||
             value == 41.0 ||
             value == 42.0 ||
             value == 43.0 ||
             value == 44.0 ||
             value == 45.0 ||
             value == 46.0 ||
             value == 47.0 ||
             value == 48.0 ||
             value == 49.0 ||
             value == 50.0 ||
             value == 51.0 ||
             value == 52.0 ||
             value == 53.0 ||
             value == 54.0 ||
             value == 55.0 ||
             value == 56.0 ||
             value == 57.0 ||
             value == 58.0 ||
             value == 59.0 ||
             value == 60.0 ||
             value == 61.0 ||
             value == 62.0 ||
             value == 63.0 ||
             value == 96.0 ||
             value == 97.0 ||
             value == 98.0 ||
             value == 99.0 ||
             value == 100.0 ||
             value == 101.0 ||
             value == 102.0 ||
             value == 103.0 ||
             value == 104.0 ||
             value == 105.0 ||
             value == 106.0 ||
             value == 107.0 ||
             value == 108.0 ||
             value == 109.0 ||
             value == 110.0 ||
             value == 111.0 ||
             value == 112.0 ||
             value == 113.0 ||
             value == 114.0 ||
             value == 115.0 ||
             value == 116.0 ||
             value == 117.0 ||
             value == 118.0 ||
             value == 119.0 ||
             value == 120.0 ||
             value == 121.0 ||
             value == 122.0 ||
             value == 123.0 ||
             value == 124.0 ||
             value == 125.0 ||
             value == 126.0 ||
             value == 127.0 ||
             value == 160.0 ||
             value == 161.0 ||
             value == 162.0 ||
             value == 163.0 ||
             value == 164.0 ||
             value == 165.0 ||
             value == 166.0 ||
             value == 167.0 ||
             value == 168.0 ||
             value == 169.0 ||
             value == 170.0 ||
             value == 171.0 ||
             value == 172.0 ||
             value == 173.0 ||
             value == 174.0 ||
             value == 175.0 ||
             value == 176.0 ||
             value == 177.0 ||
             value == 178.0 ||
             value == 179.0 ||
             value == 180.0 ||
             value == 181.0 ||
             value == 182.0 ||
             value == 183.0 ||
             value == 184.0 ||
             value == 185.0 ||
             value == 186.0 ||
             value == 187.0 ||
             value == 188.0 ||
             value == 189.0 ||
             value == 190.0 ||
             value == 191.0 ||
             value == 224.0 ||
             value == 225.0 ||
             value == 226.0 ||
             value == 227.0 ||
             value == 228.0 ||
             value == 229.0 ||
             value == 230.0 ||
             value == 231.0 ||
             value == 232.0 ||
             value == 233.0 ||
             value == 234.0 ||
             value == 235.0 ||
             value == 236.0 ||
             value == 237.0 ||
             value == 238.0 ||
             value == 239.0 ||
             value == 240.0 ||
             value == 241.0 ||
             value == 242.0 ||
             value == 243.0 ||
             value == 244.0 ||
             value == 245.0 ||
             value == 246.0 ||
             value == 247.0 ||
             value == 248.0 ||
             value == 249.0 ||
             value == 250.0 ||
             value == 251.0 ||
             value == 252.0 ||
             value == 253.0 ||
             value == 254.0 ||
             value == 255.0)) ||
           (check == 64.0 &&
            (value == 64.0 ||
             value == 65.0 ||
             value == 66.0 ||
             value == 67.0 ||
             value == 68.0 ||
             value == 69.0 ||
             value == 70.0 ||
             value == 71.0 ||
             value == 72.0 ||
             value == 73.0 ||
             value == 74.0 ||
             value == 75.0 ||
             value == 76.0 ||
             value == 77.0 ||
             value == 78.0 ||
             value == 79.0 ||
             value == 80.0 ||
             value == 81.0 ||
             value == 82.0 ||
             value == 83.0 ||
             value == 84.0 ||
             value == 85.0 ||
             value == 86.0 ||
             value == 87.0 ||
             value == 88.0 ||
             value == 89.0 ||
             value == 90.0 ||
             value == 91.0 ||
             value == 92.0 ||
             value == 93.0 ||
             value == 94.0 ||
             value == 95.0 ||
             value == 96.0 ||
             value == 97.0 ||
             value == 98.0 ||
             value == 99.0 ||
             value == 100.0 ||
             value == 101.0 ||
             value == 102.0 ||
             value == 103.0 ||
             value == 104.0 ||
             value == 105.0 ||
             value == 106.0 ||
             value == 107.0 ||
             value == 108.0 ||
             value == 109.0 ||
             value == 110.0 ||
             value == 111.0 ||
             value == 112.0 ||
             value == 113.0 ||
             value == 114.0 ||
             value == 115.0 ||
             value == 116.0 ||
             value == 117.0 ||
             value == 118.0 ||
             value == 119.0 ||
             value == 120.0 ||
             value == 121.0 ||
             value == 122.0 ||
             value == 123.0 ||
             value == 124.0 ||
             value == 125.0 ||
             value == 126.0 ||
             value == 127.0 ||
             value == 192.0 ||
             value == 193.0 ||
             value == 194.0 ||
             value == 195.0 ||
             value == 196.0 ||
             value == 197.0 ||
             value == 198.0 ||
             value == 199.0 ||
             value == 200.0 ||
             value == 201.0 ||
             value == 202.0 ||
             value == 203.0 ||
             value == 204.0 ||
             value == 205.0 ||
             value == 206.0 ||
             value == 207.0 ||
             value == 208.0 ||
             value == 209.0 ||
             value == 210.0 ||
             value == 211.0 ||
             value == 212.0 ||
             value == 213.0 ||
             value == 214.0 ||
             value == 215.0 ||
             value == 216.0 ||
             value == 217.0 ||
             value == 218.0 ||
             value == 219.0 ||
             value == 220.0 ||
             value == 221.0 ||
             value == 222.0 ||
             value == 223.0 ||
             value == 224.0 ||
             value == 225.0 ||
             value == 226.0 ||
             value == 227.0 ||
             value == 228.0 ||
             value == 229.0 ||
             value == 230.0 ||
             value == 231.0 ||
             value == 232.0 ||
             value == 233.0 ||
             value == 234.0 ||
             value == 235.0 ||
             value == 236.0 ||
             value == 237.0 ||
             value == 238.0 ||
             value == 239.0 ||
             value == 240.0 ||
             value == 241.0 ||
             value == 242.0 ||
             value == 243.0 ||
             value == 244.0 ||
             value == 245.0 ||
             value == 246.0 ||
             value == 247.0 ||
             value == 248.0 ||
             value == 249.0 ||
             value == 250.0 ||
             value == 251.0 ||
             value == 252.0 ||
             value == 253.0 ||
             value == 254.0 ||
             value == 255.0)) ||
           (check == 128.0 &&
            (value == 128.0 ||
             value == 129.0 ||
             value == 130.0 ||
             value == 131.0 ||
             value == 132.0 ||
             value == 133.0 ||
             value == 134.0 ||
             value == 135.0 ||
             value == 136.0 ||
             value == 137.0 ||
             value == 138.0 ||
             value == 139.0 ||
             value == 140.0 ||
             value == 141.0 ||
             value == 142.0 ||
             value == 143.0 ||
             value == 144.0 ||
             value == 145.0 ||
             value == 146.0 ||
             value == 147.0 ||
             value == 148.0 ||
             value == 149.0 ||
             value == 150.0 ||
             value == 151.0 ||
             value == 152.0 ||
             value == 153.0 ||
             value == 154.0 ||
             value == 155.0 ||
             value == 156.0 ||
             value == 157.0 ||
             value == 158.0 ||
             value == 159.0 ||
             value == 160.0 ||
             value == 161.0 ||
             value == 162.0 ||
             value == 163.0 ||
             value == 164.0 ||
             value == 165.0 ||
             value == 166.0 ||
             value == 167.0 ||
             value == 168.0 ||
             value == 169.0 ||
             value == 170.0 ||
             value == 171.0 ||
             value == 172.0 ||
             value == 173.0 ||
             value == 174.0 ||
             value == 175.0 ||
             value == 176.0 ||
             value == 177.0 ||
             value == 178.0 ||
             value == 179.0 ||
             value == 180.0 ||
             value == 181.0 ||
             value == 182.0 ||
             value == 183.0 ||
             value == 184.0 ||
             value == 185.0 ||
             value == 186.0 ||
             value == 187.0 ||
             value == 188.0 ||
             value == 189.0 ||
             value == 190.0 ||
             value == 191.0 ||
             value == 192.0 ||
             value == 193.0 ||
             value == 194.0 ||
             value == 195.0 ||
             value == 196.0 ||
             value == 197.0 ||
             value == 198.0 ||
             value == 199.0 ||
             value == 200.0 ||
             value == 201.0 ||
             value == 202.0 ||
             value == 203.0 ||
             value == 204.0 ||
             value == 205.0 ||
             value == 206.0 ||
             value == 207.0 ||
             value == 208.0 ||
             value == 209.0 ||
             value == 210.0 ||
             value == 211.0 ||
             value == 212.0 ||
             value == 213.0 ||
             value == 214.0 ||
             value == 215.0 ||
             value == 216.0 ||
             value == 217.0 ||
             value == 218.0 ||
             value == 219.0 ||
             value == 220.0 ||
             value == 221.0 ||
             value == 222.0 ||
             value == 223.0 ||
             value == 224.0 ||
             value == 225.0 ||
             value == 226.0 ||
             value == 227.0 ||
             value == 228.0 ||
             value == 229.0 ||
             value == 230.0 ||
             value == 231.0 ||
             value == 232.0 ||
             value == 233.0 ||
             value == 234.0 ||
             value == 235.0 ||
             value == 236.0 ||
             value == 237.0 ||
             value == 238.0 ||
             value == 239.0 ||
             value == 240.0 ||
             value == 241.0 ||
             value == 242.0 ||
             value == 243.0 ||
             value == 244.0 ||
             value == 245.0 ||
             value == 246.0 ||
             value == 247.0 ||
             value == 248.0 ||
             value == 249.0 ||
             value == 250.0 ||
             value == 251.0 ||
             value == 252.0 ||
             value == 253.0 ||
             value == 254.0 ||
             value == 255.0));
}
      // Usage

// 0b10000
#define MY_BITWISE 16

// 0b10101
float someValue = 21;

if(bitMaskCheck(someValue, MY_BITWISE)){
  // some logic here
}

// This is the same as (someValue & MY_BITWISE) == MY_BITWISE
Другие вопросы по тегам