Domanda

E 'possibile recuperare l'elemento HTML Canvas 2D dati bitmap, è anche possibile accedere al contenuto reso di un elemento Canvas 3D / WebGL come dati bitmap?

È stato utile?

Soluzione

La firma di readPixels di WebGL è cambiato in un progetto più tardi.

Invece di restituire un nuovo array con l'everytime i dati di pixel, si passa un array di riempire come ultimo argomento:

readPixels nulli (GLint x, y GLint, larghezza GLsizei, altezza GLsizei, formato GLenum, tipo GLenum, pixel ArrayBufferView)

Ciò consente di riutilizzare la stessa matrice per operazioni multiple readPixels.

Altri suggerimenti

Dalla bozza di lavoro della WebGL Specification :

ArrayBufferView readPixels(GLint x, GLint y, 
    GLsizei width, GLsizei height, GLenum format, GLenum type)
  

Restituisce un'ArrayBufferView con i pixel   all'interno del rettangolo passato. I dati   tornato da readPixels deve essere   up-to-date del più recente   inviato comando di disegno. qualsiasi non trasformati   comandi di disegno devono essere compilati e   i loro risultati presentati al corrente   disegno buffer prima readPixels   accede al buffer di disegno.

     

La specifica sottoclasse di   ArrayBufferView restituito dipende   il tipo di passato. Se è   UNSIGNED_BYTE, un Uint8Array è   tornato, altrimenti un Uint16Array è   restituito.

Non più diretto con readPixels, ma questo potrebbe anche lavoro. È inoltre possibile rendere la tela per un elemento di immagine, in questo modo:

var img = document.getElementById("game-canvas").toDataURL("image/jpeg");
$("#shots").append("<img src=\"" + img + "\" width=\"320\" height=\"480\"/>");

Si deve arrivare vostro contesto WebGL con l'opzione speciale preserveDrawingContext per questo lavoro però:

var gl = canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true});

Da lì in poi, se si vuole manipolare l'immagine con facilità, si potrebbe rendere che in una tela 2d e leggere i pixel se volete.

Io uso regolarmente presente a prendere "screenshot" delle cose che sto giocando con.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top