I have a WebGLTexture object. How do I get pixels of that texture (similar to WebGL's readPixels, but for a texture)?
One idea I have is to create a canvas and a WebGL context with preserveDrawingBuffer=true, and render my texture on this canvas so that it shows 2D flat, and then use readPixels. Is this approach reasonable? Does anyone have a sample code for this?
You can try attaching the texture to a framebuffer and then calling readPixels on the frame buffer.
at init time
at read time
For textures of format = gl.RGBA, type = gl.UNSIGNED_BYTE canRead should always be true. For other formats and types canRead might be false.