Предполагается, что это мета-ошибка.
Некоторые из оставшихся методов заблокированы на https://github.com/servo/servo/issues/5014 (те, которые получают ArrayBufferView
или BufferDataSource
и имеют переопределения), но некоторые другие могут быть реализовано без проблем.
Я постараюсь записать отдельные проблемы для каждого оставшегося недостатка, так как некоторые из них могут быть E-Easy
.
Нажмите, чтобы развернуть
Спецификация WebGL 1.0 находится здесь .
WebGL основан на спецификации GLES 2.0, поэтому спецификация WebGL часто использует детали. Вы можете найти PDF версию здесь .
DOM-сторону кода WebGL можно найти в следующих файлах:
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 - это поток, который получает сообщения WebGL от DOM и либо выполняет его, либо отправляет в серверную часть WebRender.
Вероятно, вам здесь ничего не нужно трогать, но если вы хотите взглянуть, файл:
components/canvas/webgl_paint_thread.rs
Остальные определения WebGL и реализации команд находятся в файле webgl.rs
webrender_traits
для совместного использования как Servo, так и WebRender.
Вы захотите взглянуть на определение WebGLCommand
и на функцию apply
.
Для активной работы с ним лучше всего использовать переопределение Cargo .
Обратите внимание, что WebGLCommand
реэкспортируется из canvas_traits
как CanvasWebGLMessage
по устаревшим причинам (чтобы избежать лишних проблем с перебазированием, пока webrender еще не слился).
gl.shaderSource()
(# 21754)antialiasing
(# 21285)ImageBitmap
(# 20650)WebGLRenderingContext.bufferSubData
(# 20558)[AllowShared]
(# 20515)drawingBufferWidth
/ drawingBufferHeight
в WebGLRenderingContext
(# 20530)WebGLRenderingContext.getContextAttributes
(# 20532)WebGLRenderingContext.bufferData
(# 20557)[Throws]
не применяется к перегрузке (# 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
s.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
(# 21132)cc @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, чтобы отслеживать их, не стесняйтесь оставлять там любые вопросы :)
Я смотрю на функции трафарета *.
Я пробую в copyTex*
и texSubImage2D
Попытка
Implement isShader
Implement isTexture
Я бы хотел помочь texSubImage2D
@daoshengmu : звучит здорово!
@danlrobertson , вы все еще работаете над texSubImage2D
?
@danlrobertson Извините за то, что не заметил, что вы работаете над texSubImage2D
. Я просто хочу помочь в реализации WebGL. Если вы все еще работаете над этим, я могу выбрать copyTexImage2D
и copyTexSubImage2D
@emilio
@daoshengmu Нет проблем! Это нормально! Плохо то, что столько времени занимает пиарщик, но, увы, жизнь бывает: smile: ...
Вы согласны взять texSubImage2D
? Я уже реализовал необходимые компоненты в wr_traits . Вскоре у меня должен быть PR для copyTex*
, но на самом деле я еще не начал с 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). Я также собрал https://github.com/anholt/servo/tree/webgl-uniform-matrix-v для uniformmatrix, но тестирование необходимо отладить.
@anholt круто ! Вам нужна помощь с тестированием однородной матрицы?
@MortimerGoro просто выясняет, что происходит, с ненадежными результатами.
Я открыл # 13639 для отслеживания поддержки FBO. Хотите добавить это в framebufferRenderbuffer / framebufferTexture2D?
@ shravan-achar, возможно, будет интересно поработать здесь над остальными.
Похоже, что неправильное использование toDataURL()
для WebGL является причиной целого ряда оставшихся проблем с тестовым набором (например, asin_001_to_006.html
)
Только 5 недостающих API сейчас.
я, @ taki -jaro, @xanewok будут работать над этим вопросом в качестве студенческого проекта.
cc @KiChjang
Я планирую попробовать glGetTexParameter.
Работаем над getFramebufferAttachmentParameter()
.
Я бы хотел сделать getRenderbufferParameter
По какой-то причине эта проблема больше не регистрирует изменения.
Изменить: похоже, сейчас работает.
Я добавил кучу проблем.
Самый полезный комментарий
Я планирую попробовать glGetTexParameter.