performance - 如何在没有 ("<<"的情况下执行位移位 || ">>") 运营商有效吗?

标签 performance opengl-es bit-manipulation shader glsl

我正在研究 OpenGL ES 2.0 着色器,并且我有紧密打包的数据,例如两个字节块内的三个 5 位无符号整数。要解压这些数据,我显然需要位移,但 OpenGL ES 着色语言不支持此操作(请参见第 29 页 http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf)

因此,我执行了许多 *2 和/2 操作来模拟位移。

有谁知道更有效/更优雅的方法来做到这一点?有什么我不知道的技巧吗?

谢谢!

最佳答案

我从未使用过 OpenGL,但如果您的环境支持,最有效的方法是为每种类型使用 16 位查找表。您需要在启动时填充表一次,但这应该非常快。您可以为每种类型使用单独的表或二维表,例如,theTable[65536][3]。

关于performance - 如何在没有 ("<<"的情况下执行位移位 || ">>") 运营商有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466567/

相关文章:

django - 如何优化复杂查询 django 1.8

android - Canvas 上的位图对于任何带有移动对象的游戏来说都是一个坏主意

java - 从 40 亿中找出缺失的数字(再次)

mysql - 在 group by 子句中使用的列上添加索引好吗?

android - 如何强制最大 CPU 使用率

opengl-es - 尝试在后台线程中加载/设置场景导致 "OpenGL error 0x0502 in -[CCSprite draw] 530"

iphone - 在 iPhone 应用程序中将单个像素直接绘制到屏幕上的最快方法是什么?

c - 位移掩码仍然让我望而却步

MATLAB 将值向量转换为 uint32

java - volatile 变量 'reads' 与正常读取一样快吗?