mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Implement new WebGL interfaces and methods
This commit implements: * WebGLFramebuffer * WebGLRenderbuffer * WebGLTexture And adds the following methods to `WebGLRenderingContext`: * create{Texture,Framebuffer,Renderbuffer} * bind{Texture,Framebuffer,Renderbuffer} * destroy{Buffer,Texture,Framebuffer,Renderbuffer} Fixes: * WebGLUniform location shouldn't inherit from WebGLObject. Known Issues: * WebGL objects have to be destroyed on drop, we may want to keep a reference to the context, or maybe a clone of the renderer to achieve this Also refactors a huge part of the current implementation, to allow failing on creation of different WebGL objects. Blocked on https://github.com/servo/gleam/pull/22 A reftest for most of the added functionality is not doable right now, we need a few more functions in order to upload a texture, for example.
This commit is contained in:
parent
ad5846f2e1
commit
9f94d39c9e
14 changed files with 469 additions and 102 deletions
7
components/script/dom/webidls/WebGLFramebuffer.webidl
Normal file
7
components/script/dom/webidls/WebGLFramebuffer.webidl
Normal file
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// WebGL IDL definitions scraped from the Khronos specification:
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.7
|
||||
//
|
||||
|
||||
interface WebGLFramebuffer : WebGLObject {
|
||||
};
|
7
components/script/dom/webidls/WebGLRenderbuffer.webidl
Normal file
7
components/script/dom/webidls/WebGLRenderbuffer.webidl
Normal file
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// WebGL IDL definitions scraped from the Khronos specification:
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.5
|
||||
//
|
||||
|
||||
interface WebGLRenderbuffer : WebGLObject {
|
||||
};
|
|
@ -485,15 +485,15 @@ interface WebGLRenderingContextBase
|
|||
//[WebGLHandlesContextLoss] boolean isContextLost();
|
||||
|
||||
//sequence<DOMString>? getSupportedExtensions();
|
||||
//object? getExtension(DOMString name);
|
||||
object? getExtension(DOMString name);
|
||||
|
||||
//void activeTexture(GLenum texture);
|
||||
void attachShader(WebGLProgram? program, WebGLShader? shader);
|
||||
//void bindAttribLocation(WebGLProgram? program, GLuint index, DOMString name);
|
||||
void bindBuffer(GLenum target, WebGLBuffer? buffer);
|
||||
//void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
|
||||
//void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
|
||||
//void bindTexture(GLenum target, WebGLTexture? texture);
|
||||
void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
|
||||
void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
|
||||
void bindTexture(GLenum target, WebGLTexture? texture);
|
||||
//void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
//void blendEquation(GLenum mode);
|
||||
//void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
||||
|
@ -533,20 +533,20 @@ interface WebGLRenderingContextBase
|
|||
// GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
|
||||
WebGLBuffer? createBuffer();
|
||||
//WebGLFramebuffer? createFramebuffer();
|
||||
WebGLFramebuffer? createFramebuffer();
|
||||
WebGLProgram? createProgram();
|
||||
//WebGLRenderbuffer? createRenderbuffer();
|
||||
WebGLRenderbuffer? createRenderbuffer();
|
||||
WebGLShader? createShader(GLenum type);
|
||||
//WebGLTexture? createTexture();
|
||||
WebGLTexture? createTexture();
|
||||
|
||||
//void cullFace(GLenum mode);
|
||||
|
||||
//void deleteBuffer(WebGLBuffer? buffer);
|
||||
//void deleteFramebuffer(WebGLFramebuffer? framebuffer);
|
||||
//void deleteProgram(WebGLProgram? program);
|
||||
//void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||
//void deleteShader(WebGLShader? shader);
|
||||
//void deleteTexture(WebGLTexture? texture);
|
||||
void deleteBuffer(WebGLBuffer? buffer);
|
||||
void deleteFramebuffer(WebGLFramebuffer? framebuffer);
|
||||
void deleteProgram(WebGLProgram? program);
|
||||
void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||
void deleteShader(WebGLShader? shader);
|
||||
void deleteTexture(WebGLTexture? texture);
|
||||
|
||||
//void depthFunc(GLenum func);
|
||||
//void depthMask(GLboolean flag);
|
||||
|
|
7
components/script/dom/webidls/WebGLTexture.webidl
Normal file
7
components/script/dom/webidls/WebGLTexture.webidl
Normal file
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// WebGL IDL definitions scraped from the Khronos specification:
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/#5.9
|
||||
//
|
||||
|
||||
interface WebGLTexture : WebGLObject {
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue