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.

Reply via email to