【问题标题】:Opengl es glsl bitwise operations equivalentsOpengl es glsl 按位运算等价物
【发布时间】:2016-04-12 13:56:10
【问题描述】:

我正在尝试将一些 opengl glsl 转换为 opengl es (2.0) glsl。我通过将字节值转换为代码中的浮点数,然后将其转换回着色器,将字节值传递给片段着色器。然后我需要将结果拆分为 0-15 之间的两个值。对于我正在使用的opengl glsl

int x = int(a_otherdata);
int a = (x >> 4) & 0xF;
int b = x & 0xF;

但是,由于 opengl es 不支持按位运算,我尝试执行以下操作,但它不起作用。

int x = int(a_otherdata);
int a = x / 16;
int b = x - (a * 16);

【问题讨论】:

    标签: opengl-es bit-manipulation glsl glsles


    【解决方案1】:

    问题在于,在 OpenGL ES 2.0 GLSL 中,ints 实际上可能不是整数;它们可能被实现为浮点数——唯一的保证是基于精度可以保持的整数值的范围。所以这个除法可能是一个浮点除法,这意味着如果你想把它四舍五入,你需要在里面打一个floor

    int a = int(floor(a_otherdata / 16));
    int b = int(mod(a_otherdata, 16));
    

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      相关资源
      最近更新 更多