我正在尝试将32位整数保存到位图中的像素中。如何使用Python3将这个示例值98603205存储到每个0-255的rgba通道中? (大数字不是颜色,而是数据结构中的地址。)
然后从GLSL片段着色器中的像素解压缩值?
我希望在python3中提供一个小的代码示例,并在GLSL中提供一个解压缩的示例。
拆箱应尽可能快
最佳问候
这是解决方案的第一部分,使用python中的按位运算将整数转换为4x255个颜色通道
import random
# create random integer to test pack and unpack
nrToUnpack = random.randint(0,4294967295)
# create bitwize masks for color channels
redMask = 0xFF000000
greenMask = 0xFF0000
blueMask = 0xFF00
alphaMask = 0xFF
print("not unpacked yet", nrToUnpack)
# bitwize mask the integer into 8-bits each
red = (nrToUnpack & redMask) >> 24
green = (nrToUnpack & greenMask) >> 16
blue = (nrToUnpack & blueMask) >> 8
alpha = (nrToUnpack & alphaMask)
# each channel 0-255
print("unpacked", red, green, blue, alpha)
# bitwize repack the integer
numberPacked = alpha | (blue << 8) | (green << 16) | (red << 24)
print("repacked again", numberPacked)
要存储的最大值为4294967295下一部分是在GLSL中解压缩此文件。有什么建议吗?