我想将一个数组缓冲区从 Javascript 发送到 Native Client 模块,然后我想将数组缓冲区转换为整数指针。我在 nacl-sdk 目录中看到了 earth 示例。他们正在传递图像数据并将其转换为:
//javascript
var imageData = context.getImageData(0, 0, img.width, img.height);
// Send NaCl module the raw image data obtained from canvas.
common.naclModule.postMessage({'message' : 'texture',
'name' : name,
'width' : img.width,
'height' : img.height,
'data' : imageData.data.buffer});
//nativeclient
std::string name = dictionary.Get("name").AsString();
int width = dictionary.Get("width").AsInt();
int height = dictionary.Get("height").AsInt();
pp::VarArrayBuffer array_buffer(dictionary.Get("data"));
if (!name.empty() && !array_buffer.is_null()) {
if (width > 0 && height > 0) {
uint32_t* pixels = static_cast<uint32_t*>(array_buffer.Map());
SetTexture(name, width, height, pixels);
array_buffer.Unmap();
我正在使用 eclipse 调试,我不知道如何检查数组缓冲区是否被正确接收以及是否可以将像素作为参数传递给某个函数,或者我必须pixels = new uint32_t[size]
在传递之前创建它们。更重要的是,我需要知道如何使用字典将uint32_t*
像素转换VarArrayBuffer
为 Javascript 并将其发送到 Javascript 并发布消息,以及如何在 Javascript 中接收该消息并将消息作为ArrayBuffer
值处理。