2016-04-20 1 views
2

Angenommen, wir können ImageData von CanvasRenderingContext2D bekommen.Gibt es eine Methode für `WebGLRenderingContext` in` CanvasRenderingContext2D.getImageData() `?

var element = document.getElementById('someCanvas'); 
var context = element.getContext('2d'); 
var imageData = context.getImageData(0, 0, width, height); 

Ich frage mich, ob es mit WebGLRenderingContext so gut gemacht werden kann?

var element = document.getElementById('someCanvas'); 
var context = element.getContext('webgl'); 
/* Get image data ... */ 

Vielen Dank!

Antwort

2

Es funktioniert nicht genau das gleiche, aber Sie können alle Pixel im Zeichenpuffer mit WebGLRenderingContext.readPixels abrufen. Stellen Sie sicher, dass Sie es vor nennen, beenden Sie das Ereignis, das die Pixel tatsächlich gerendert hat.

var context = element.getContext('webgl'); 
var pixels = new Uint8Array(context.drawingBufferWidth * context.drawingBufferHeight * 4); 
context.readPixels(
    0, 
    0, 
    context.drawingBufferWidth, 
    context.drawingBufferHeight, 
    context.RGBA, 
    context.UNSIGNED_BYTE, 
    pixels); 
+1

Sie müssen den Zeichenpuffer nicht beibehalten. Sie müssen nur sicherstellen, dass Sie readPixels aufrufen, bevor Sie das Ereignis beenden, mit dem die Pixel gerendert wurden. – gman

+0

@gman Mein Fehler. Ich habe das vor langer Zeit gelesen. Bearbeitet. –

+1

Funktioniert sehr gut, danke! –

Verwandte Themen