32 lines
1.8 KiB
JavaScript
32 lines
1.8 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$extractAttributesFromGlProgram = function(global, require, module, exports) {
|
|
var getAttributeInfoFromFormat = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$geometry$utils$getAttributeInfoFromFormat"), mapType = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$mapType");
|
|
"use strict";
|
|
exports.extractAttributesFromGlProgram = function(program, gl, sortAttributes = !1) {
|
|
const attributes = {};
|
|
var totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
for (let i = 0; i < totalAttributes; i++) {
|
|
const attribData = gl.getActiveAttrib(program, i);
|
|
if (attribData.name.startsWith("gl_")) {
|
|
continue;
|
|
}
|
|
const format = mapType.mapGlToVertexFormat(gl, attribData.type);
|
|
attributes[attribData.name] = {location:0, format, stride:getAttributeInfoFromFormat.getAttributeInfoFromFormat(format).stride, offset:0, instance:!1, start:0};
|
|
}
|
|
totalAttributes = Object.keys(attributes);
|
|
if (sortAttributes) {
|
|
totalAttributes.sort((a, b) => a > b ? 1 : -1);
|
|
for (sortAttributes = 0; sortAttributes < totalAttributes.length; sortAttributes++) {
|
|
attributes[totalAttributes[sortAttributes]].location = sortAttributes, gl.bindAttribLocation(program, sortAttributes, totalAttributes[sortAttributes]);
|
|
}
|
|
gl.linkProgram(program);
|
|
} else {
|
|
for (sortAttributes = 0; sortAttributes < totalAttributes.length; sortAttributes++) {
|
|
attributes[totalAttributes[sortAttributes]].location = gl.getAttribLocation(program, totalAttributes[sortAttributes]);
|
|
}
|
|
}
|
|
return attributes;
|
|
};
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$extractAttributesFromGlProgram.js.map
|