glGetBufferSubDataを使いたかったがEmscriptenに実装がなかった。
Issueが作られてて、 EM_ASM
を使えば呼び出せると書かれていたのでこれを使うことにした。
auto size = bufferWidth * bufferHeight * 4;
auto ptr = std::make_unique<uint8_t[]>(size);
EM_ASM({
Module.ctx.getBufferSubData(
Module.ctx.PIXEL_PACK_BUFFER,
0,
HEAPU8.subarray($0, $0 + $1));
}, ptr.get(), size);
本当はglMapBufferRangeを使いたかったんだけど、これはWebGLでは使えない。
やむなくこの部分だけ getBufferSubData
で代替することにした。
ときどきふむなぁ、こういうの。