mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-25 11:48:06 +00:00
LibWeb: Implement more WebGL calls
This commit is contained in:
parent
cfb394cad3
commit
f3a24d1569
Notes:
github-actions[bot]
2024-12-03 22:36:58 +00:00
Author: https://github.com/kalenikaliaksandr
Commit: f3a24d1569
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2688
Reviewed-by: https://github.com/ADKaster ✅
5 changed files with 261 additions and 80 deletions
|
@ -6,11 +6,11 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
typedef unsigned int GLenum;
|
||||
typedef unsigned char GLboolean;
|
||||
typedef int GLint;
|
||||
typedef int GLsizei;
|
||||
typedef float GLfloat;
|
||||
typedef double GLdouble;
|
||||
typedef GLfloat GLclampf;
|
||||
typedef unsigned int GLbitfield;
|
||||
#include <LibGC/Root.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
||||
namespace Web::WebGL {
|
||||
|
||||
using GLenum = unsigned int;
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@ typedef boolean GLboolean;
|
|||
typedef unsigned long GLbitfield;
|
||||
typedef long GLint;
|
||||
typedef long GLsizei;
|
||||
typedef long long GLintptr;
|
||||
typedef unsigned long GLuint;
|
||||
typedef long long GLsizeiptr;
|
||||
|
||||
typedef unrestricted float GLfloat;
|
||||
typedef unrestricted float GLclampf;
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
#import <HTML/HTMLCanvasElement.idl>
|
||||
#import <WebGL/Types.idl>
|
||||
#import <WebGL/WebGLActiveInfo.idl>
|
||||
#import <WebGL/WebGLBuffer.idl>
|
||||
#import <WebGL/WebGLObject.idl>
|
||||
#import <WebGL/WebGLProgram.idl>
|
||||
#import <WebGL/WebGLShader.idl>
|
||||
#import <WebGL/WebGLTexture.idl>
|
||||
#import <WebGL/WebGLUniformLocation.idl>
|
||||
#import <WebGL/WebGLRenderbuffer.idl>
|
||||
#import <WebGL/WebGLFramebuffer.idl>
|
||||
|
||||
dictionary WebGLContextAttributes {
|
||||
boolean alpha = true;
|
||||
|
@ -36,80 +45,80 @@ interface mixin WebGLRenderingContextBase {
|
|||
[FIXME] object? getExtension(DOMString name);
|
||||
|
||||
undefined activeTexture(GLenum texture);
|
||||
[FIXME] undefined attachShader(WebGLProgram program, WebGLShader shader);
|
||||
undefined attachShader(WebGLProgram program, WebGLShader shader);
|
||||
[FIXME] undefined bindAttribLocation(WebGLProgram program, GLuint index, DOMString name);
|
||||
[FIXME] undefined bindBuffer(GLenum target, WebGLBuffer? buffer);
|
||||
undefined bindBuffer(GLenum target, WebGLBuffer? buffer);
|
||||
[FIXME] undefined bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
|
||||
[FIXME] undefined bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
|
||||
[FIXME] undefined bindTexture(GLenum target, WebGLTexture? texture);
|
||||
[FIXME] undefined blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
[FIXME] undefined blendEquation(GLenum mode);
|
||||
[FIXME] undefined blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
||||
[FIXME] undefined blendFunc(GLenum sfactor, GLenum dfactor);
|
||||
[FIXME] undefined blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
||||
undefined bindTexture(GLenum target, WebGLTexture? texture);
|
||||
undefined blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
undefined blendEquation(GLenum mode);
|
||||
undefined blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
||||
undefined blendFunc(GLenum sfactor, GLenum dfactor);
|
||||
undefined blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
||||
|
||||
[FIXME] GLenum checkFramebufferStatus(GLenum target);
|
||||
GLenum checkFramebufferStatus(GLenum target);
|
||||
undefined clear(GLbitfield mask);
|
||||
undefined clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
undefined clearDepth(GLclampf depth);
|
||||
undefined clearStencil(GLint s);
|
||||
undefined colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
[FIXME] undefined compileShader(WebGLShader shader);
|
||||
undefined compileShader(WebGLShader shader);
|
||||
|
||||
[FIXME] undefined copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
[FIXME] undefined copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
|
||||
[FIXME] WebGLBuffer? createBuffer();
|
||||
WebGLBuffer? createBuffer();
|
||||
[FIXME] WebGLFramebuffer? createFramebuffer();
|
||||
[FIXME] WebGLProgram? createProgram();
|
||||
WebGLProgram? createProgram();
|
||||
[FIXME] WebGLRenderbuffer? createRenderbuffer();
|
||||
[FIXME] WebGLShader? createShader(GLenum type);
|
||||
[FIXME] WebGLTexture? createTexture();
|
||||
WebGLShader? createShader(GLenum type);
|
||||
WebGLTexture? createTexture();
|
||||
|
||||
undefined cullFace(GLenum mode);
|
||||
|
||||
[FIXME] undefined deleteBuffer(WebGLBuffer? buffer);
|
||||
[FIXME] undefined deleteFramebuffer(WebGLFramebuffer? framebuffer);
|
||||
[FIXME] undefined deleteProgram(WebGLProgram? program);
|
||||
undefined deleteProgram(WebGLProgram? program);
|
||||
[FIXME] undefined deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||
[FIXME] undefined deleteShader(WebGLShader? shader);
|
||||
undefined deleteShader(WebGLShader? shader);
|
||||
[FIXME] undefined deleteTexture(WebGLTexture? texture);
|
||||
|
||||
undefined depthFunc(GLenum func);
|
||||
undefined depthMask(GLboolean flag);
|
||||
undefined depthRange(GLclampf zNear, GLclampf zFar);
|
||||
[FIXME] undefined detachShader(WebGLProgram program, WebGLShader shader);
|
||||
[FIXME] undefined disable(GLenum cap);
|
||||
[FIXME] undefined disableVertexAttribArray(GLuint index);
|
||||
[FIXME] undefined drawArrays(GLenum mode, GLint first, GLsizei count);
|
||||
[FIXME] undefined drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
|
||||
undefined detachShader(WebGLProgram program, WebGLShader shader);
|
||||
undefined disable(GLenum cap);
|
||||
undefined disableVertexAttribArray(GLuint index);
|
||||
undefined drawArrays(GLenum mode, GLint first, GLsizei count);
|
||||
undefined drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
|
||||
|
||||
[FIXME] undefined enable(GLenum cap);
|
||||
[FIXME] undefined enableVertexAttribArray(GLuint index);
|
||||
undefined enable(GLenum cap);
|
||||
undefined enableVertexAttribArray(GLuint index);
|
||||
undefined finish();
|
||||
undefined flush();
|
||||
[FIXME] undefined framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer? renderbuffer);
|
||||
[FIXME] undefined framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture? texture, GLint level);
|
||||
undefined frontFace(GLenum mode);
|
||||
|
||||
[FIXME] undefined generateMipmap(GLenum target);
|
||||
undefined generateMipmap(GLenum target);
|
||||
|
||||
[FIXME] WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index);
|
||||
[FIXME] WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index);
|
||||
[FIXME] sequence<WebGLShader>? getAttachedShaders(WebGLProgram program);
|
||||
|
||||
[FIXME] GLint getAttribLocation(WebGLProgram program, DOMString name);
|
||||
GLint getAttribLocation(WebGLProgram program, DOMString name);
|
||||
|
||||
[FIXME] any getBufferParameter(GLenum target, GLenum pname);
|
||||
[FIXME] any getParameter(GLenum pname);
|
||||
any getParameter(GLenum pname);
|
||||
|
||||
GLenum getError();
|
||||
|
||||
[FIXME] any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname);
|
||||
[FIXME] any getProgramParameter(WebGLProgram program, GLenum pname);
|
||||
any getProgramParameter(WebGLProgram program, GLenum pname);
|
||||
[FIXME] DOMString? getProgramInfoLog(WebGLProgram program);
|
||||
[FIXME] any getRenderbufferParameter(GLenum target, GLenum pname);
|
||||
[FIXME] any getShaderParameter(WebGLShader shader, GLenum pname);
|
||||
any getShaderParameter(WebGLShader shader, GLenum pname);
|
||||
[FIXME] WebGLShaderPrecisionFormat? getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype);
|
||||
[FIXME] DOMString? getShaderInfoLog(WebGLShader shader);
|
||||
|
||||
|
@ -119,65 +128,65 @@ interface mixin WebGLRenderingContextBase {
|
|||
|
||||
[FIXME] any getUniform(WebGLProgram program, WebGLUniformLocation location);
|
||||
|
||||
[FIXME] WebGLUniformLocation? getUniformLocation(WebGLProgram program, DOMString name);
|
||||
WebGLUniformLocation? getUniformLocation(WebGLProgram program, DOMString name);
|
||||
|
||||
[FIXME] any getVertexAttrib(GLuint index, GLenum pname);
|
||||
|
||||
[FIXME] GLintptr getVertexAttribOffset(GLuint index, GLenum pname);
|
||||
|
||||
[FIXME] undefined hint(GLenum target, GLenum mode);
|
||||
[FIXME] GLboolean isBuffer(WebGLBuffer? buffer);
|
||||
[FIXME] GLboolean isEnabled(GLenum cap);
|
||||
[FIXME] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer);
|
||||
[FIXME] GLboolean isProgram(WebGLProgram? program);
|
||||
[FIXME] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||
[FIXME] GLboolean isShader(WebGLShader? shader);
|
||||
[FIXME] GLboolean isTexture(WebGLTexture? texture);
|
||||
undefined hint(GLenum target, GLenum mode);
|
||||
GLboolean isBuffer(WebGLBuffer? buffer);
|
||||
GLboolean isEnabled(GLenum cap);
|
||||
GLboolean isFramebuffer(WebGLFramebuffer? framebuffer);
|
||||
GLboolean isProgram(WebGLProgram? program);
|
||||
GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||
GLboolean isShader(WebGLShader? shader);
|
||||
GLboolean isTexture(WebGLTexture? texture);
|
||||
undefined lineWidth(GLfloat width);
|
||||
[FIXME] undefined linkProgram(WebGLProgram program);
|
||||
[FIXME] undefined pixelStorei(GLenum pname, GLint param);
|
||||
undefined linkProgram(WebGLProgram program);
|
||||
undefined pixelStorei(GLenum pname, GLint param);
|
||||
undefined polygonOffset(GLfloat factor, GLfloat units);
|
||||
|
||||
[FIXME] undefined renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
[FIXME] undefined sampleCoverage(GLclampf value, GLboolean invert);
|
||||
undefined renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
undefined sampleCoverage(GLclampf value, GLboolean invert);
|
||||
undefined scissor(GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
|
||||
[FIXME] undefined shaderSource(WebGLShader shader, DOMString source);
|
||||
undefined shaderSource(WebGLShader shader, DOMString source);
|
||||
|
||||
[FIXME] undefined stencilFunc(GLenum func, GLint ref, GLuint mask);
|
||||
[FIXME] undefined stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
[FIXME] undefined stencilMask(GLuint mask);
|
||||
[FIXME] undefined stencilMaskSeparate(GLenum face, GLuint mask);
|
||||
undefined stencilFunc(GLenum func, GLint ref, GLuint mask);
|
||||
undefined stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
undefined stencilMask(GLuint mask);
|
||||
undefined stencilMaskSeparate(GLenum face, GLuint mask);
|
||||
undefined stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
|
||||
undefined stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
|
||||
|
||||
[FIXME] undefined texParameterf(GLenum target, GLenum pname, GLfloat param);
|
||||
[FIXME] undefined texParameteri(GLenum target, GLenum pname, GLint param);
|
||||
undefined texParameterf(GLenum target, GLenum pname, GLfloat param);
|
||||
undefined texParameteri(GLenum target, GLenum pname, GLint param);
|
||||
|
||||
[FIXME] undefined uniform1f(WebGLUniformLocation? location, GLfloat x);
|
||||
[FIXME] undefined uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
|
||||
[FIXME] undefined uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
|
||||
[FIXME] undefined uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
undefined uniform1f(WebGLUniformLocation? location, GLfloat x);
|
||||
undefined uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
|
||||
undefined uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
|
||||
undefined uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
|
||||
[FIXME] undefined uniform1i(WebGLUniformLocation? location, GLint x);
|
||||
[FIXME] undefined uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
|
||||
[FIXME] undefined uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
|
||||
[FIXME] undefined uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
|
||||
undefined uniform1i(WebGLUniformLocation? location, GLint x);
|
||||
undefined uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
|
||||
undefined uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
|
||||
undefined uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
|
||||
|
||||
[FIXME] undefined useProgram(WebGLProgram? program);
|
||||
[FIXME] undefined validateProgram(WebGLProgram program);
|
||||
undefined useProgram(WebGLProgram? program);
|
||||
undefined validateProgram(WebGLProgram program);
|
||||
|
||||
[FIXME] undefined vertexAttrib1f(GLuint index, GLfloat x);
|
||||
[FIXME] undefined vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
|
||||
[FIXME] undefined vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||
[FIXME] undefined vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
undefined vertexAttrib1f(GLuint index, GLfloat x);
|
||||
undefined vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
|
||||
undefined vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||
undefined vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
|
||||
[FIXME] undefined vertexAttrib1fv(GLuint index, Float32List values);
|
||||
[FIXME] undefined vertexAttrib2fv(GLuint index, Float32List values);
|
||||
[FIXME] undefined vertexAttrib3fv(GLuint index, Float32List values);
|
||||
[FIXME] undefined vertexAttrib4fv(GLuint index, Float32List values);
|
||||
|
||||
[FIXME] undefined vertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
|
||||
undefined vertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
|
||||
|
||||
undefined viewport(GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
#import <WebGL/Types.idl>
|
||||
|
||||
// FIXME: BufferSource should be a Float32Array
|
||||
typedef (BufferSource or sequence<GLfloat>) Float32List;
|
||||
|
||||
// https://registry.khronos.org/webgl/specs/latest/1.0/#5.14
|
||||
interface mixin WebGLRenderingContextOverloads {
|
||||
[FIXME] undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
|
||||
[FIXME] undefined bufferData(GLenum target, AllowSharedBufferSource? data, GLenum usage);
|
||||
undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
|
||||
// FIXME: BufferSource is really a AllowSharedBufferSource
|
||||
undefined bufferData(GLenum target, BufferSource? data, GLenum usage);
|
||||
[FIXME] undefined bufferSubData(GLenum target, GLintptr offset, AllowSharedBufferSource data);
|
||||
|
||||
[FIXME] undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, [AllowShared] ArrayBufferView data);
|
||||
|
@ -15,17 +21,18 @@ interface mixin WebGLRenderingContextOverloads {
|
|||
[FIXME] undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||
[FIXME] undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
||||
|
||||
[FIXME] undefined uniform1fv(WebGLUniformLocation? location, Float32List v);
|
||||
[FIXME] undefined uniform2fv(WebGLUniformLocation? location, Float32List v);
|
||||
[FIXME] undefined uniform3fv(WebGLUniformLocation? location, Float32List v);
|
||||
[FIXME] undefined uniform4fv(WebGLUniformLocation? location, Float32List v);
|
||||
undefined uniform1fv(WebGLUniformLocation? location, Float32List v);
|
||||
undefined uniform2fv(WebGLUniformLocation? location, Float32List v);
|
||||
undefined uniform3fv(WebGLUniformLocation? location, Float32List v);
|
||||
undefined uniform4fv(WebGLUniformLocation? location, Float32List v);
|
||||
|
||||
[FIXME] undefined uniform1iv(WebGLUniformLocation? location, Int32List v);
|
||||
[FIXME] undefined uniform2iv(WebGLUniformLocation? location, Int32List v);
|
||||
[FIXME] undefined uniform3iv(WebGLUniformLocation? location, Int32List v);
|
||||
[FIXME] undefined uniform4iv(WebGLUniformLocation? location, Int32List v);
|
||||
|
||||
[FIXME] undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||
[FIXME] undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||
[FIXME] undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||
// FIXME: Float32Array should be a Float32List
|
||||
undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||
undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||
undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue