StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/gl-vao/lib/vao-native.js

87 lines
2.1 KiB

"use strict"
var bindAttribs = require("./do-bind.js")
function VertexAttribute(location, dimension, a, b, c, d) {
this.location = location
this.dimension = dimension
this.a = a
this.b = b
this.c = c
this.d = d
}
VertexAttribute.prototype.bind = function(gl) {
switch(this.dimension) {
case 1:
gl.vertexAttrib1f(this.location, this.a)
break
case 2:
gl.vertexAttrib2f(this.location, this.a, this.b)
break
case 3:
gl.vertexAttrib3f(this.location, this.a, this.b, this.c)
break
case 4:
gl.vertexAttrib4f(this.location, this.a, this.b, this.c, this.d)
break
}
}
function VAONative(gl, ext, handle) {
this.gl = gl
this._ext = ext
this.handle = handle
this._attribs = []
this._useElements = false
this._elementsType = gl.UNSIGNED_SHORT
}
VAONative.prototype.bind = function() {
this._ext.bindVertexArrayOES(this.handle)
for(var i=0; i<this._attribs.length; ++i) {
this._attribs[i].bind(this.gl)
}
}
VAONative.prototype.unbind = function() {
this._ext.bindVertexArrayOES(null)
}
VAONative.prototype.dispose = function() {
this._ext.deleteVertexArrayOES(this.handle)
}
VAONative.prototype.update = function(attributes, elements, elementsType) {
this.bind()
bindAttribs(this.gl, elements, attributes)
this.unbind()
this._attribs.length = 0
if(attributes)
for(var i=0; i<attributes.length; ++i) {
var a = attributes[i]
if(typeof a === "number") {
this._attribs.push(new VertexAttribute(i, 1, a))
} else if(Array.isArray(a)) {
this._attribs.push(new VertexAttribute(i, a.length, a[0], a[1], a[2], a[3]))
}
}
this._useElements = !!elements
this._elementsType = elementsType || this.gl.UNSIGNED_SHORT
}
VAONative.prototype.draw = function(mode, count, offset) {
offset = offset || 0
var gl = this.gl
if(this._useElements) {
gl.drawElements(mode, count, this._elementsType, offset)
} else {
gl.drawArrays(mode, offset, count)
}
}
function createVAONative(gl, ext) {
return new VAONative(gl, ext, ext.createVertexArrayOES())
}
module.exports = createVAONative