I'm wondering if it is possible to convert memory location to an
ArrayBuffer.
const int COMP = 4;
long createBitmap(int DIM)
{
srand(NULL);
// create buffer
long buffer = EM_ASM_INT(
{
var buffer = Module._malloc($0 * 1);
return buffer;
}, DIM*DIM*COMP);
uint8_t* bitmap = (uint8_t*)buffer;
//just randomly fill the buffer
for (int i = 0; i < DIM*DIM*COMP; i++)
{
if (i%4==3)
bitmap[i] = 255;
else
bitmap[i] = rand()%256;
}
return buffer;
}
This is the C++ code where I just fill an array with random RGB values.
And I can display the whole thing without problems in javascript
var dim = 1080;
var buffer = Module.createBitmap(dim);
var c = document.getElementById("bitmap");
var ctx = c.getContext("2d");
var imgData = ctx.createImageData(dim,dim);
for (var i = 0; i < dim*dim*4; i++)
{
imgData.data[i] = Module.HEAPU8[buffer+i];
}
ctx.putImageData(imgData, 0, 0)
What I don't like here though is the fact that I have to loop through all
the bitmap components separately and assign them to the imgData.data array.
This array is a Uint8ClampedArray and I was wondering if there is a way to
convert this 'buffer' variable to an ArrayBuffer of type Uint8ClampedArray
which would save a lot of copying. Especially since there could be several
bitmaps passed per second.
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.