python panda3d教程_如何在panda3d中使用setRamImage?

我有一个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,但我想不通。在

救命啊!在

你可能感兴趣的:(python,panda3d教程)