-
-
Save okuoku/7b9f11f7ad236eaba05437e9a9dbb564 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Context, Platform */ | |
struct cwgl_ctx_s; | |
typedef struct cwgl_ctx_s cwgl_ctx_t; | |
cwgl_ctx_t* cwgl_ctx_create(int32_t height, int32_t width, int32_t reserved, int32_t flags); | |
void cwgl_ctx_release(cwgl_ctx_t* ctx); | |
#define CWGL_CTX_FLAG_HAS_ALPHA (1<<0) | |
#define CWGL_CTX_FLAG_HAS_DEPTH (1<<1) | |
#define CWGL_CTX_FLAG_HAS_STENCIL (1<<2) | |
#define CWGL_CTX_FLAG_ANTIALIAS (1<<3) | |
#define CWGL_CTX_FLAG_PREMULTIPLIEDALPHA (1<<4) | |
#define CWGL_CTX_FLAG_PRESERVEDRAWINGBUFFER (1<<5) | |
enum cwgl_query_result_e; | |
typedef enum cwgl_query_result_e cwgl_query_result_t; | |
enum cwgl_enum_e; | |
typedef enum cwgl_enum_e cwgl_enum_t; | |
/* Heap Objects */ | |
struct cwgl_string_s; | |
typedef struct cwgl_string_s cwgl_string_t; | |
size_t cwgl_string_size(cwgl_ctx_t* ctx, cwgl_string_t* str); | |
cwgl_query_result_t cwgl_string_read(cwgl_ctx_t* ctx, cwgl_string_t* str, char* buf, size_t buflen); | |
void cwgl_string_release(cwgl_ctx_t* ctx, cwgl_string_t* str); | |
struct cwgl_Buffer_s; | |
struct cwgl_Shader_s; | |
struct cwgl_Program_s; | |
struct cwgl_Texture_s; | |
struct cwgl_Framebuffer_s; | |
struct cwgl_Renderbuffer_s; | |
typedef struct cwgl_Buffer_s cwgl_Buffer_t; | |
typedef struct cwgl_Shader_s cwgl_Shader_t; | |
typedef struct cwgl_Program_s cwgl_Program_t; | |
typedef struct cwgl_Texture_s cwgl_Texture_t; | |
typedef struct cwgl_Framebuffer_s cwgl_Framebuffer_t; | |
typedef struct cwgl_Renderbuffer_s cwgl_Renderbuffer_t; | |
void cwgl_Buffer_release(cwgl_ctx_t* ctx, cwgl_Buffer_t* buffer); | |
void cwgl_Shader_release(cwgl_ctx_t* ctx, cwgl_Shader_t* shader); | |
void cwgl_Program_release(cwgl_ctx_t* ctx, cwgl_Program_t* program); | |
void cwgl_Texture_release(cwgl_ctx_t* ctx, cwgl_Texture_t* texture); | |
void cwgl_Framebuffer_release(cwgl_ctx_t* ctx, cwgl_Framebuffer_t* framebuffer); | |
void cwgl_Renderbuffer_release(cwgl_ctx_t* ctx, cwgl_Renderbuffer_t* renderbuffer); | |
struct cwgl_UniformLocation_s; | |
typedef struct cwgl_UniformLocation_s cwgl_UniformLocation_t; | |
void cwgl_UniformLocation_release(cwgl_ctx_t* ctx, cwgl_UniformLocation_t* uniformlocation); | |
/* Context, Platform */ | |
int32_t cwgl_getContextAttributes(cwgl_ctx_t* ctx); | |
int cwgl_isContextLost(cwgl_ctx_t* ctx); | |
cwgl_query_result_t cwgl_getSupportedExtensions(cwgl_ctx_t* ctx, cwgl_string_t** str, size_t buflen, size_t* out_reslen); | |
//object? getExtension(DOMString name); | |
/* OpenGL State */ | |
void cwgl_disable(cwgl_ctx_t* ctx, cwgl_enum_t cap); | |
void cwgl_enable(cwgl_ctx_t* ctx, cwgl_enum_t cap); | |
// 2.5 GL Errors | |
GLenum getError(); | |
// 2.7 Current Vertex State | |
void vertexAttrib1f(GLuint indx, GLfloat x); | |
void vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); | |
void vertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); | |
void vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); | |
// 2.8 Vertex Arrays | |
void vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); | |
void enableVertexAttribArray(GLuint index); | |
void disableVertexAttribArray(GLuint index); | |
void drawArrays(GLenum mode, GLint first, GLsizei count); | |
void drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset); | |
// 2.9 Buffer Objects | |
void bindBuffer(GLenum target, WebGLBuffer? buffer); | |
void deleteBuffer(WebGLBuffer? buffer); | |
WebGLBuffer? createBuffer(); // genBuffers | |
void bufferData(GLenum target, GLsizeiptr size, GLenum usage); | |
void bufferData(GLenum target, BufferDataSource? data, GLenum usage); | |
void bufferSubData(GLenum target, GLintptr offset, BufferDataSource? data); | |
// 2.10 Vertex shaders | |
// 2.10.1 Loading and Creating Shader Source | |
// missing: ReleaseShaderCompiler | |
WebGLShader? createShader(GLenum type); | |
void shaderSource(WebGLShader? shader, DOMString source); | |
void compileShader(WebGLShader? shader); | |
void deleteShader(WebGLShader? shader); | |
// 2.10.3 Program Objects | |
WebGLProgram? createProgram(); | |
void attachShader(WebGLProgram? program, WebGLShader? shader); | |
void detachShader(WebGLProgram? program, WebGLShader? shader); | |
void linkProgram(WebGLProgram? program); | |
void useProgram(WebGLProgram? program); | |
void deleteProgram(WebGLProgram? program); | |
// 2.10.4 Shader Variables | |
WebGLActiveInfo? getActiveAttrib(WebGLProgram? program, GLuint index); | |
GLint getAttribLocation(WebGLProgram? program, DOMString name); | |
void bindAttribLocation(WebGLProgram? program, GLuint index, DOMString name); | |
WebGLUniformLocation? getUniformLocation(WebGLProgram? program, DOMString name); | |
WebGLActiveInfo? getActiveUniform(WebGLProgram? program, GLuint index); | |
void uniform1f(WebGLUniformLocation? location, GLfloat x); | |
void uniform1i(WebGLUniformLocation? location, GLint x); | |
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); | |
void uniform2i(WebGLUniformLocation? location, GLint x, GLint y); | |
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); | |
void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); | |
void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); | |
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); | |
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value); | |
void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value); | |
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value); | |
// 2.10.5 Shader Execution | |
void validateProgram(WebGLProgram? program); | |
// 2.12.1 Controlling the Viewport | |
void depthRange(GLclampf zNear, GLclampf zFar); | |
void viewport(GLint x, GLint y, GLsizei width, GLsizei height); | |
// 3.4 Line Segments | |
void lineWidth(GLfloat width); | |
// 3.5 Polygons | |
void frontFace(GLenum mode); | |
void cullFace(GLenum mode); | |
// 3.5.2 Depth offset | |
void polygonOffset(GLfloat factor, GLfloat units); | |
// 3.6.1 Pixel Storage Modes | |
void pixelStorei(GLenum pname, GLint param); | |
// 3.7 Texturing | |
void activeTexture(GLenum texture); | |
// 3.7.1 Texture Image Specification | |
void texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels); | |
// 3.7.2 Alternate Texture Image Specification Commands | |
void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); | |
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView? pixels); | |
void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); | |
// 3.7.3 Compressed Texture Images | |
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, ArrayBufferView data); | |
void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, ArrayBufferView data); | |
// 3.7.4 Texture Parameters | |
void texParameterf(GLenum target, GLenum pname, GLfloat param); | |
void texParameteri(GLenum target, GLenum pname, GLint param); | |
// 3.7.11 Mipmap Generation | |
void generateMipmap(GLenum target); | |
// 3.7.13 Texture Objects | |
void bindTexture(GLenum target, WebGLTexture? texture); | |
void deleteTexture(WebGLTexture? texture); | |
WebGLTexture? createTexture(); // GenTextures | |
// 4.1.2 Scissor Test | |
void scissor(GLint x, GLint y, GLsizei width, GLsizei height); | |
// 4.1.3 Multisample Fragment Operations | |
void sampleCoverage(GLclampf value, GLboolean invert); | |
// 4.1.4 Stencil Test | |
void stencilFunc(GLenum func, GLint ref, GLuint mask); | |
void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); | |
void stencilOp(GLenum fail, GLenum zfail, GLenum zpass); | |
void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); | |
// 4.1.5 Depth Buffer Test | |
void depthFunc(GLenum func); | |
// 4.1.6 Blending | |
void blendEquation(GLenum mode); | |
void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); | |
void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); | |
void blendFunc(GLenum sfactor, GLenum dfactor); | |
void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); | |
// 4.2.2 Fine Control of Buffer Updates | |
void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); | |
void depthMask(GLboolean flag); | |
void stencilMask(GLuint mask); | |
void stencilMaskSeparate(GLenum face, GLuint mask); | |
// 4.2.3 Clearing the Buffers | |
void clear(GLbitfield mask); | |
void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); | |
void clearDepth(GLclampf depth); | |
void clearStencil(GLint s); | |
// 4.3.1 Reading Pixels | |
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView? pixels); | |
// 4.4.1 Binding and Managing Framebuffer Objects | |
void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer); | |
void deleteFramebuffer(WebGLFramebuffer? framebuffer); | |
WebGLFramebuffer? createFramebuffer(); // genFramebuffers | |
// 4.4.3 Renderbuffer Objects | |
void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer); | |
void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer); | |
WebGLRenderbuffer? createRenderbuffer(); // genRenderBuffers | |
void renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); | |
void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer? renderbuffer); | |
void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture? texture, GLint level); | |
// 4.4.5 Framebuffer Completeness | |
GLenum checkFramebufferStatus(GLenum target); | |
// 5.1 Flush and Finish | |
void finish(); | |
void flush(); | |
// 5.2 Hints | |
void hint(GLenum target, GLenum mode); | |
// 6.1.1 Simple Queries | |
any getParameter(GLenum pname); // GetBooleanv / GetIntegerv / GetFloatv | |
GLboolean isEnabled(GLenum cap); | |
// 6.1.3 Enumerated Queries | |
any getTexParameter(GLenum target, GLenum pname); | |
any getBufferParameter(GLenum target, GLenum pname); | |
any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname); | |
any getRenderbufferParameter(GLenum target, GLenum pname); | |
// 6.1.4 Texture Queries | |
GLboolean isTexture(WebGLTexture? texture); // how's non-bound textures? | |
// 6.1.5 String Queries | |
// GetString => getParameter | |
// 6.1.6 Buffer Object Queries | |
GLboolean isBuffer(WebGLBuffer? buffer); | |
// 6.1.7 Framebuffer Object and Renderbuffer Queries | |
GLboolean isFramebuffer(WebGLFramebuffer? framebuffer); | |
GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer); | |
// 6.1.8 Shader and Program Queries | |
GLboolean isShader(WebGLShader? shader); | |
any getShaderParameter(WebGLShader? shader, GLenum pname); // GetShaderiv | |
GLboolean isProgram(WebGLProgram? program); | |
any getProgramParameter(WebGLProgram? program, GLenum pname); // GetProgramiv | |
sequence<WebGLShader>? getAttachedShaders(WebGLProgram? program); | |
DOMString? getProgramInfoLog(WebGLProgram? program); | |
DOMString? getShaderInfoLog(WebGLShader? shader); | |
DOMString? getShaderSource(WebGLShader? shader); | |
WebGLShaderPrecisionFormat? getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype); | |
any getVertexAttrib(GLuint index, GLenum pname); | |
GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname); // GetVertexAttribPointer | |
any getUniform(WebGLProgram? program, WebGLUniformLocation? location); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment