Kann man leicht ein HTML-Bildelement aus einem WebGL-Texturobjekt erstellen?

8

Ich möchte ein WebGLTexture-Objekt, das ich gerendert habe, verwenden und damit ein HTML-Bildelement erstellen. Das Ziel besteht darin, das Ergebnis eines Offscreen-Rendering-Passes zu Debugging-Zwecken anzuzeigen. Es sollte viel einfacher sein als das Rendern der Textur zu einem Vollbildschirm-Quad, meiner aktuellen Debugging-Methode.

Das Erstellen einer Textur aus einem Bildelement ist in WebGL wirklich einfach:

%Vor%

Das Laden und Dekodieren von Bildern ist für Sie vollständig erledigt.

Gibt es eine ähnlich einfache Möglichkeit, das Gegenteil zu tun? d.h.:

%Vor%

Wenn es einen Weg gibt, dies zu tun, bin ich sicher, dass es in Kontexten außerhalb des Debuggens nützlich sein wird. Ich werde weiter sehen, ob ich einen Weg finden kann, es zu tun, aber ich habe das Gefühl, dass jemand das vorher versucht haben muss.

    
wmrowan 19.11.2011, 01:11
quelle

3 Antworten

14

Sie können einen Framebuffer erstellen, der von einer Textur unterstützt wird, und dann die Rohpixeldaten aus dem Framebuffer mit gl.readPixels () . Sobald Sie das Datenpixel haben, können Sie es mithilfe von ImageData auf eine 2D-Leinwand kopieren. Dann können Sie ein Bild erstellen, indem Sie die src-Eigenschaft des Bildes auf canvas.toDataURL () setzen.

%Vor%     
nkron 14.09.2013 16:50
quelle
2

Hier ist ein Beispiel für die Ausführung eines node.js-Servers in Verbindung mit toDataURL (), um mehrere Bilder direkt auf die Festplatte zu übertragen:

Ссылка

    
Jeremy Cowles 17.01.2013 21:55
quelle
1

Ein WebGL-Kontext ist ein Canvas, und es gibt mehrere gut dokumentierte Möglichkeiten, ein Bild aus einem Canvas herauszuholen. Daher wird die grundlegende Methodologie ungefähr so ​​aussehen:

  1. Zeichnen Sie Ihre Textur auf einem Fullscreen-Quad (gut, Full-Canvas). Es wird Am besten ist es, wenn Sie die Größe der Leinwand vorher ändern, damit die Zeichenfläche eine 1: 1-Pixelverhältnis mit dem Texturbild, das Sie zeichnen möchten.
  2. Verwenden Sie eine Methode wie die hier beschriebene , um die Bilddaten zu erhalten aus der Leinwand.

Wenn Sie das Bild wirklich speichern möchten, müssen Sie es wahrscheinlich an einen Server zur Verarbeitung senden. Wenn Sie jedoch nur das Bild auf der gleichen Seite anzeigen möchten, auf der es gerendert wurde, können Sie das Bild einstellen dataURI, die Sie für das img -Attribut des src -Tags erhalten haben, und es sollte ordnungsgemäß angezeigt werden.

    
Toji 19.11.2011 19:20
quelle

Tags und Links