README
Intro
🎃 A wrapped, elegant webGL library.
Installation
CDN
<script src="https://unpkg.com/wrap-gl"></script>
npm
npm i wrap-gl
Usage
1. new a glManager Object
CDN
var glManager/gm = new GLManager()
npm
import GLManager/GM from "wrap-gl"
var glManager/gm = new GLManager()
2. usage
var gm = new GLManager("canvas", { fixRetina: false })
let gl = gm.gl
const vertexShader = `
attribute vec2 a_pos;
void main() {
gl_Position = vec4(a_pos, 0.0, 1.0);
gl_PointSize = 10.0;
}
`
const fragShader = `
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
`
gm.adjustViewport()
var program = gm.createProgram(vertexShader, fragShader)
gl.useProgram(program.program)
let buffer = gm.createBuffer(new Float32Array([-0.5, -0.5, 0.5, 0.5]))
gm.bindAttribute(buffer, program.a_pos, 2)
gl.drawArrays(gl.POINTS, 0, 2)
And you'll get this =>
3. have fun!
API(GLManager)
1. props
gm.canvas.width | gm.canvas.height
gm.enableFramebuffer(gm.framebuffer)
gm.disableFramebuffer
A Square buffer. Used for a whole screen
#source code
this.quadBuffer = this.createBuffer(
new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1])
)
2. methods
2.1 adjustViewport()
AdjustViewport. Usually use it once on beginning.
, fragmentSource)
2.2 createProgram(vertexSourceCreate a program
return program
)
2.3 useProgram(programStart a program
, data, width, height)
2.4 createTexture(filterSame with webgl's texture
, height)
2.5 createQuadTexture(widthSimiliar with createTexture, but 1st, it returns a empty texture, second it's a square texture
, unit)
2.6 bindTexture(textureBind texture with its id
)
2.7 drawTexture(textureIndexDraw texture to screen or framebuffer
, attribute, num)
2.8 bindAttribute(bufferBind attribute
)
2.9 createBuffer(dataCreateBuffer
, texture)
2.10 bindFramebuffer(framebufferBindFramebuffer
)
2.11 enableFrameBuffer(texturedisable frameBuffer
2.12 disableFrameBuffer()
disable frameBuffer
, g, b, a)
2.13 clearGL(rClear current canvas.r,g,b,a => 0.0 ~ 1.0
, r, g, b, a)
2.14 clearTexture(textureClear texture. r,g,b,a => 0.0 ~ 1.0