—
我有一个C库,它将一个无符号char*指针传递回python,其中包含RGB像素数据。在
执行此操作的python api是:# unsigned char *ar_get_rgb(void *handle);
libar.ar_get_rgb.argtypes = [ c_void_p ]
libar.ar_get_rgb.restype = POINTER(c_char)
在panda3d中,我试图将这些数据渲染为纹理。这里有一篇关于如何做到这一点的博文:
http://www.panda3d.org/blog/?p=96
但是,我发现这样做有一些非常严重的限制,我在这里已经讨论过:http://www.panda3d.org/forums/viewtopic.php?t=13183,因此我现在尝试使用setRamImage()api来设置纹理内存。在
似乎有一种方法可以做到这一点,但目前我唯一能做的就是对纹理使用逐像素集调用,如下所示:
^{pr2}$
这很管用…但它每2秒就以惊人的1帧速度运行。在Expected length: 921600
RGB buffer size: 921600 <-- C debugging data
PTAU length: 4
Assertion failed: compression != CM_off || image.size() == do_get_expected_ram_image_size() at line 833 of panda/src/gobj/texture.cxx
Traceback (most recent call last):
我很困惑这个“4”的长度来自何处,因为RGB数组中前20个奇数值的转储如下所示:0: 163, 1: 151, 2: 162, 3: 85, 4: 83, 5: 190, 6: 241, 7: 252, 8: 249, 9: 121, 10: 107, 11: 82, 12: 20, 13: 19, 14: 233, 15: 226, 16: 45, 17: 81, 18: 142, 19: 31
PTAU length: 4
必须有一种方法可以将我的无符号char*数组转换成可以输入的内容PTAUchar.setData或者PTAUchar.setSubdata,但我想不通。在
救命啊!在