这是一个元错误。
其余的一些方法在https://github.com/servo/servo/issues/5014上被阻止(那些接收ArrayBufferView
或BufferDataSource
并具有覆盖的方法),但其他一些方法可以实施没有问题。
我将尝试为每个剩余的缺陷提交单独的问题,因为其中一些可能是E-Easy
。
点击展开
WebGL 1.0 规范在这里。
WebGL 基于 GLES 2.0 规范,因此 WebGL 规范经常利用它的细节。 您可以在此处找到 PDF 版本。
WebGL 代码的 DOM 端可以在以下文件中找到:
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
WebGL 线程是从 DOM 接收 WebGL 消息并执行它或将其分派到 WebRender 后端的线程。
您可能不需要在这里触摸任何东西,但如果您想看一看,该文件是:
components/canvas/webgl_paint_thread.rs
其余的 WebGL 定义和命令实现位于webrender_traits
的webgl.rs
文件中,以便由 Servo 和 WebRender 共享。
您需要查看WebGLCommand
定义和apply
函数。
要积极使用它,最好的方法是使用Cargo override 。
请注意,出于遗留原因, WebGLCommand
从canvas_traits
重新导出为CanvasWebGLMessage
(以避免在 webrender 尚未合并时额外的变基痛苦)。
gl.shaderSource()
(#21754)antialiasing
的 WebGL 上下文选项 (#21285)ImageBitmap
(#20650)WebGLRenderingContext.bufferSubData
中的溢出 (#20558)[AllowShared]
(#20515)WebGLRenderingContext
缓存drawingBufferWidth
/ drawingBufferHeight
WebGLRenderingContext
(#20530)WebGLRenderingContext.getContextAttributes
缓存结果 (#20532)WebGLRenderingContext.bufferData
分配空缓冲区(#20557)[Throws]
不适用于 per-overload (#20516)WebGLRenderingContext.getProgramInfoLog
的行为 (#20561)handle_object_deletion
可能是错误的 (#21352)WebGLRenderingContext.activeTexture
(#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
和IMPLEMENTATION_COLOR_READ_TYPE
(#20547)MAX_FRAGMENT_UNIFORM_VECTORS
和MAX_VERTEX_UNIFORM_VECTORS
(#20548)gl.getParameter(gl.MAX_VARYING_VECTORS)
(#20549)SCISSOR_TEST
和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
检查 (#20556)gl.renderbufferStorage
的检查 (#20563)WebGLRenderingContext.getFramebufferAttachmentParameter
(#20593) 中的支票WebGLRenderingContext.clear
(#20623)GLclampf
(#20652)gl.getParameter
和朋友中返回正确的类型 (#20655)renderbufferStorage
未初始化的数据泄露 (#13710)WebGLShader
析构函数在关闭 webgl 页面时频繁断言 (#21177)WebGLRenderingContext
时,重新检查我们的验证。WebGLCommand
重新导出为CanvasWebGLMessage
(https://github.com/servo/servo/issues/10211)gl.getActiveAttrib
和gl.getActiveUniform
(#20600)gl.getVertexAttrib
和gl.getVertexAttribOffset
所需的缓存信息 (#20608)gl-pointcoord.html
不绘制任何东西 (#21719)oes-texture-half-float.html
在桌面模式下运行时出现 GL 错误(#21663)preserveDrawingBuffer
的 WebGL 上下文选项 (#21132)抄送@dmarcos
我将致力于实现 generateMipmap
@ConnorGBrewster我打开了 https://github.com/servo/servo/issues/10226,让我们在那里讨论 :)
我想在getActiveUniform
@saurvs我为您打开了 https://github.com/servo/servo/issues/10397,请随时提出您在那里可能遇到的任何问题:)
如果可以的话,我想研究所有剩余的统一方法
@autrilla他们是你的! 我已经打开 https://github.com/servo/servo/issues/10417 来跟踪它们,请随时在那里留下任何问题:)
我正在查看 stencil* 函数。
我正在尝试copyTex*
和texSubImage2D
尝试
Implement isShader
Implement isTexture
我想帮助texSubImage2D
@daoshengmu :听起来不错!
@danlrobertson ,你还在texSubImage2D
吗?
@danlrobertson抱歉,我没有注意到您正在处理texSubImage2D
。 我只是想帮助一些 WebGL 的实现。 如果你还在努力,我可以选择copyTexImage2D
和copyTexSubImage2D
@emilio
@daoshengmu没问题! 完全没问题! 花了这么长时间才拿到 PR 是我的坏事,但遗憾的是生活发生了:微笑:...
你可以接受texSubImage2D
吗? 我已经在wr_traits 中实现了必要的组件。 我应该很快就能获得copyTex*
的 PR,但实际上我还没有开始使用texSubImage2D
。 如果你想要texSubImage2D
,去吧! 我对它没有特别的依恋。 只是想了解一下 webgl 代码...
@danlrobertson当然。 我会拿texSubImage2D
。 谢谢! 😄
如果可以的话,我会继续工作Implement isFramebuffer
和Implement isRenderBuffer
@DDEFISHER 加油! 介意为那些人打开一个问题,以便我可以分配给你吗?
我也将在isBuffer
因为它类似于其他 2
如果您打算解决此问题,请在此处发表评论。 谢谢!
个别 API 的单独问题是 E-easy 材料; 不是这个。
任何人都可以指出我可以使用的 E-easy(ish) 实现吗? 谢谢 :)
@ofekd isEnabled
可能是一个不错的选择,因为enable
和disable
已经实现了!
@jdm我会接受的
@ofekd isEnabled 作为新贡献者可能会很棘手,因为您需要跨模块更改内容。 webgl-specific.html
一些测试用例,如混合函数或模板函数,应该是非常好的起点。 invalid-passed-params.html
可能也有很好的简单任务。
@anholt只要它不是很复杂,我不介意再做一些工作。 我还没有开始研究这个,但对于初学者来说,我似乎需要改变:
webrender_traits/src/webgl.rs
servo/components/script/dom/webglrenderingcontext.rs
servo/components/script/dom/webidls/WebGLRenderingContext.webidl
除非它以某种方式阻碍其他努力,否则我将继续致力于isEnabled
我将致力于实施 validateProgram 和 getProgramInfoLog
我将在 uniformMatrix2fv、uniformMatrix3fv、uniformMatrix4fv 和 framebufferRenderbuffer、framebufferTexture2D、renderbufferStorage 工作。
我将运行要求更高的 webgl 演示并测量伺服上的性能,我需要这些功能;)
@MortimerGoro我一直致力于 FBO 支持(请参阅最近的一些合并和 https://github.com/anholt/servo/tree/webgl-fbo)。 我还为uniformmatrix 整理了https://github.com/anholt/servo/tree/webgl-uniform-matrix-v ,但测试需要调试。
@anholt太棒了! 你需要关于uniformmatrix测试的任何帮助吗?
@MortimerGoro只是想弄清楚不可靠的结果是怎么回事。
我已经打开 #13639 来跟踪 FBO 支持。 想要将它添加到 framebufferRenderbuffer/framebufferTexture2D 吗?
@shravan-achar 可能有兴趣在这里处理其余的工作。
看起来 WebGL 的错误toDataURL()
是导致大量剩余测试用例问题的原因(例如asin_001_to_006.html
)
现在只有 5 个缺少的 API。
我、@taki-jaro、@ mrowqa和@xanewok将作为学生项目解决这个问题
抄送@KiChjang
我打算尝试 glGetTexParameter。
处理getFramebufferAttachmentParameter()
。
我想做getRenderbufferParameter
由于某种原因,这个问题似乎不再保留编辑记录。
编辑:它现在看起来正在工作。
我添加了一堆问题。
最有用的评论
我打算尝试 glGetTexParameter。