Dies soll ein Meta-Bug sein.
Einige der verbleibenden Methoden sind auf https://github.com/servo/servo/issues/5014 blockiert (diejenigen, die ArrayBufferView
oder BufferDataSource
und Überschreibungen haben), aber einige andere können es sein ohne Probleme umgesetzt.
Ich werde versuchen, für jeden verbleibenden Mangel individuelle Probleme einzureichen, da einige davon E-Easy
.
Zum erweitern klicken
Die WebGL 1.0-Spezifikation ist da .
WebGL basiert auf der GLES 2.0-Spezifikation, daher nutzt die WebGL-Spezifikation oft Details dazu. Eine PDF-Version finden Sie hier .
Die DOM-Seite des WebGL-Codes finden Sie in den folgenden Dateien:
components/script/dom/webglrenderingcontext.rs
components/script/dom/webglactiveinfo.rs
components/script/dom/webglbuffer.rs
components/script/dom/webglcontextevent.rs
components/script/dom/webglframebuffer.rs
components/script/dom/webglobject.rs
components/script/dom/webglprogram.rs
components/script/dom/webglrenderbuffer.rs
components/script/dom/webglrenderingcontext.rs
components/script/dom/webglshader.rs
components/script/dom/webglshaderprecisionformat.rs
components/script/dom/webgltexture.rs
components/script/dom/webgluniformlocation.rs
Der WebGL-Thread ist der Thread, der die WebGL-Nachrichten vom DOM empfängt und entweder ausführt oder an das WebRender-Back-End sendet.
Sie müssen hier wahrscheinlich nichts anfassen, aber falls Sie einen Blick darauf werfen möchten, ist die Datei:
components/canvas/webgl_paint_thread.rs
Der Rest der WebGL-Definitionen und die Befehlsimplementierungen befinden sich in der webrender_traits
webgl.rs
Datei von , um von Servo und WebRender gemeinsam genutzt zu werden.
Sehen Sie sich die Definition von WebGLCommand
und die Funktion apply
.
Um aktiv damit zu arbeiten, verwenden Sie am besten einen Cargo-Override .
Beachten Sie, dass WebGLCommand
aus Legacy-Gründen von canvas_traits
als CanvasWebGLMessage
re-exportiert wird (um zusätzlichen Rebase-Schmerz zu vermeiden, während Webrender noch nicht zusammengeführt wurde).
gl.shaderSource()
(#21754)antialiasing
(#21285)ImageBitmap
(#20650)WebGLRenderingContext.bufferSubData
(#20558)[AllowShared]
(#20515)drawingBufferWidth
/ drawingBufferHeight
in WebGLRenderingContext
(#20530)WebGLRenderingContext.getContextAttributes
(#20532)WebGLRenderingContext.bufferData
zuweisen (#20557)[Throws]
gilt nicht pro Überladung (#20516)WebGLRenderingContext.getProgramInfoLog
(#20561)handle_object_deletion
kann falsch sein (#21352)WebGLRenderingContext.activeTexture
prüfen (#20531)gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)
(#20535)gl.getParameter(gl.BLEND_COLOR)
(#20536)gl.getParameter(gl.COLOR_CLEAR_VALUE)
(#20537)gl.getParameter(gl.COLOR_WRITEMASK)
(#20538)gl.getParameter(gl.COMPRESSED_TEXTURE_FORMATS)
(#20544)gl.getParameter(gl.DEPTH_RANGE)
(#20545)gl.getParameter(gl.GENERATE_MIPMAP_HINT)
(#20546)IMPLEMENTATION_COLOR_READ_FORMAT
und IMPLEMENTATION_COLOR_READ_TYPE
(#20547)MAX_FRAGMENT_UNIFORM_VECTORS
und MAX_VERTEX_UNIFORM_VECTORS
(#20548)gl.getParameter(gl.MAX_VARYING_VECTORS)
(#20549)SCISSOR_TEST
und SCISSOR_BOX
(#20551)gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL)
(#20552)gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL)
(#20553)gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL)
(#20554)WebGLRenderingContext.bindBuffer
Prüfungen richtig implementieren (#20556)gl.renderbufferStorage
richtig (#20563)WebGLRenderingContext.getFramebufferAttachmentParameter
(#20593)WebGLRenderingContext.clear
richtig (#20623)GLclampf
korrekt binden (#20652)gl.getParameter
und Freunde zurück (#20655)renderbufferStorage
(#13710)WebGLShader
Destruktor bestätigt häufig beim Schließen von Webgl-Seiten (#21177)WebGLRenderingContext
s auf derselben Seite vorhanden sind.WebGLCommand
als CanvasWebGLMessage
(https://github.com/servo/servo/issues/10211)gl.getActiveAttrib
und gl.getActiveUniform
(#20600)gl.getVertexAttrib
und gl.getVertexAttribOffset
(#20608)gl-pointcoord.html
zeichnet nichts (#21719)oes-texture-half-float.html
Panik mit einem GL-Fehler beim Ausführen im Desktop-Modus (#21663)preserveDrawingBuffer
(#21132)cc @dmarcos
Ich werde an der Implementierung von generateMipmap arbeiten
@ConnorGBrewster Ich habe https://github.com/servo/servo/issues/10226 geöffnet, lass uns dort diskutieren :)
Ich möchte an getActiveUniform
@saurvs Ich habe https://github.com/servo/servo/issues/10397 für dich geöffnet,
Ich würde gerne an allen verbleibenden einheitlichen Methoden arbeiten, wenn das in Ordnung ist
@autrilla Sie gehören dir! Ich habe https://github.com/servo/servo/issues/10417 geöffnet, um den Überblick zu behalten. Fragen Sie dort gerne :)
Ich schaue mir die Stencil*-Funktionen an.
Ich knacke copyTex*
und texSubImage2D
Versuch
Implement isShader
Implement isTexture
Ich möchte texSubImage2D
helfen
@daoshengmu : klingt großartig!
@danlrobertson , texSubImage2D
?
@danlrobertson Entschuldigung, ich habe nicht bemerkt, dass Sie an texSubImage2D
. Ich möchte nur bei der Implementierung von WebGL helfen. Wenn du noch daran arbeitest , kann ich copyTexImage2D
und copyTexSubImage2D
@emilio auswählen
@daoshengmu Kein Problem! Es ist völlig in Ordnung! Es ist schade, dass ich so lange gebraucht habe, um eine PR zu bekommen, aber leider passiert das Leben : smile:...
Bist du damit einverstanden, texSubImage2D
? Die notwendigen Komponenten habe ich bereits in wr_traits implementiert . Ich sollte in Kürze eine PR für copyTex*
, aber ich hatte eigentlich noch nicht mit texSubImage2D
angefangen. Wenn Sie texSubImage2D
, machen Sie es! Ich habe keine besondere Bindung dazu. Wollte nur etwas über Webgl-Code lernen...
@danlrobertson Klar. Ich nehme texSubImage2D
. Vielen Dank! 😄
Wenn es in Ordnung ist, werde ich daran arbeiten
Implement isFramebuffer
und
Implement isRenderBuffer
@DDEFISHER mach es! Könnten Sie für diese ein Problem eröffnen, damit ich Sie dorthin zuweisen kann?
Ich werde auch an isBuffer
da es den anderen 2 ähnlich ist
Bitte geben Sie hier einen Kommentar ab, wenn Sie beabsichtigen, an diesem Thema zu arbeiten. Dankeschön!
Separate Ausgaben für einzelne APIs sind E-easy-Material; nicht dieser.
Kann jemand auf eine E-easy(ish)-Implementierung hinweisen, an der ich arbeiten kann? Vielen Dank :)
@ofekd isEnabled
könnte eine gute Wahl sein, da enable
und disable
bereits implementiert sind!
@jdm ich übernehme es
@ofekd isEnabled kann als neuer Mitwirkender schwierig sein, da Sie die Dinge webgl-specific.html
, wie die blending func oder die stencil func, sollten wirklich gute Ausgangspunkte sein. invalid-passed-params.html
wahrscheinlich auch gute einfache Aufgaben.
@anholt Solange es nicht wesentlich kompliziert ist, macht es mir nichts aus, noch etwas arbeiten zu müssen. Ich habe noch nicht angefangen, daran zu arbeiten, aber für den Anfang sieht es so aus, als ob ich etwas ändern muss:
webrender_traits/src/webgl.rs
servo/components/script/dom/webglrenderingcontext.rs
servo/components/script/dom/webidls/WebGLRenderingContext.webidl
Sofern es andere Bemühungen nicht behindert, würde ich weiterhin an isEnabled
Ich werde an der Implementierung von ValidateProgram und getProgramInfoLog arbeiten
Ich werde bei uniformMatrix2fv, uniformMatrix3fv, uniformMatrix4fv und framebufferRenderbuffer, framebufferTexture2D, renderbufferStorage arbeiten.
Ich werde anspruchsvollere Webgl-Demos ausführen und Perf auf Servo messen und ich brauche diese Funktionen ;)
@MortimerGoro Ich habe an der FBO-Unterstützung gearbeitet (siehe ein paar kürzliche Zusammenführungen und https://github.com/anholt/servo/tree/webgl-fbo). Ich habe auch https://github.com/anholt/servo/tree/webgl-uniform-matrix-v für uniformmatrix zusammengestellt, aber die Tests müssen debuggt werden.
@anholt super ! Benötigen Sie Hilfe beim Uniformmatrix-Testen?
@MortimerGoro nur herauszufinden, was mit den unzuverlässigen Ergebnissen los ist.
Ich habe #13639 geöffnet, um den FBO-Support zu verfolgen. Möchten Sie das zu framebufferRenderbuffer/framebufferTexture2D hinzufügen?
@shravan-achar könnte daran interessiert sein, hier an den verbleibenden zu arbeiten.
Es sieht so aus, als ob das Fehlen von toDataURL()
für WebGL die Ursache für viele verbleibende Testfallprobleme ist (wie asin_001_to_006.html
).
Nur noch 5 fehlende APIs.
ich, @taki-jaro, @mrowqa und @xanewok werden dieses Thema als studentisches Projekt bearbeiten
cc @KiChjang
Ich plane, glGetTexParameter zu versuchen.
Arbeiten an getFramebufferAttachmentParameter()
.
Ich möchte getRenderbufferParameter
Dieses Problem scheint aus irgendeinem Grund keine Aufzeichnungen mehr über Änderungen zu führen.
Edit: Es scheint jetzt zu funktionieren.
Ich habe eine Reihe von Problemen hinzugefügt.
Hilfreichster Kommentar
Ich plane, glGetTexParameter zu versuchen.