我尝试使用Pyglet库获得一个具有精灵图像alpha通道值的数组。 我写了这样一个代码:
mask = []
for x in range(image.width):
mask.append([])
for y in range(image.height):
mask[x].append(ord(image.get_region(x, y, 1, 1).get_image_data().get_data("RGBA", 4)[3]))
return mask
唯一的问题是它真的很慢,我猜我用了一个错误的函数来检索alpha通道。我能做些什么来加快速度?在
更新
我用以下代码找到了一个更快的解决方案:
^{pr2}$
我不知道pyglet,但我猜性能问题与许多只针对单个像素的查询有关。相反,你只需要一次调用就可以从GPU获得整个图像,包括颜色和alpha值,然后只提取alpha。我还将使用^{} 而不是
ord()
。在注意:此代码未经测试,完全基于问题中的示例。也许还有更好的方法。
我不认为这是值得的,但如果你真的不想把颜色从GPU拖回来,你可以先研究复制alpha到另一个纹理(甚至有一种方法可以让GL将其解压为格式转换或重新解释)。在
相关问题 更多 >
编程相关推荐