UNPKG

6.48 kBJavaScriptView Raw
1/*!
2* image3DCore - 🍊 使用webGL绘制三维图片。Drawing three-dimensional images using webGL.
3* git+https://github.com/hai2007/image3D.git
4*
5* author 你好2007
6*
7* version 3.3.0
8*
9* build Thu Apr 11 2019
10*
11* Copyright hai2007 < https://hai2007.gitee.io/sweethome/ >
12* Released under the MIT license
13*
14* Date:Sat Jan 08 2022 20:32:29 GMT+0800 (GMT+08:00)
15*/
16
17"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol==="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r};(function(){"use strict";var f=function r(t,e,n){var o=t.createShader(e);if(o==null)throw new Error("Unable to create shader!");t.shaderSource(o,n);t.compileShader(o);if(!t.getShaderParameter(o,t.COMPILE_STATUS))throw new Error("Failed to compile shader:"+t.getShaderInfoLog(o));return o};var i=function r(t,e,n){var o=f(t,t.VERTEX_SHADER,e),i=f(t,t.FRAGMENT_SHADER,n);var a=t.createProgram();t.attachShader(a,o);t.attachShader(a,i);t.linkProgram(a);if(!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Failed to link program: "+t.getProgramInfoLog(a));t.useProgram(a);return a};var a=function r(t,e){var n=t.createBuffer(),o=e?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER;t.bindBuffer(o,n);return n};var m=function r(t,e,n,o){var i=o?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER;t.bufferData(i,e,n)};var s=function r(t,e,n,o,i,a,f){t.vertexAttribPointer(e,n,o,f||false,i||0,a||0);t.enableVertexAttribArray(e)};var E=function r(t,e,n,o){var i=t.createTexture();if(o=="2d"){n=n||0;t.activeTexture(t["TEXTURE"+n])}t.bindTexture(e,i);return i};var A=function r(t,e,n,o,i,a){o={rgb:t.RGB,rgba:t.RGBA,alpha:t.ALPHA}[o]||t.RGBA;t.texImage2D(e,n||0,o,o,{}[i]||t.UNSIGNED_BYTE,a)};var g=function r(t,e,n,o,i,a,f,u,E){o={rgb:t.RGB,rgba:t.RGBA,alpha:t.ALPHA}[o]||t.RGBA;n=n||0;i={}[i]||t.UNSIGNED_BYTE;var c=[t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y,t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z],m=void 0,s=void 0;for(m=0;m<c.length;m++){s=c[m];t.texImage2D(s,n,o,f,u,0,o,i,null);t.bindTexture(e,E);t.texImage2D(s,n,o,o,i,a[m])}t.generateMipmap(e)};function u(f){return{setAttribute1f:function r(t,e){var n=f.getAttribLocation(f.program,t);f.vertexAttrib1f(n,e)},setAttribute2f:function r(t,e,n){var o=f.getAttribLocation(f.program,t);f.vertexAttrib2f(o,e,n)},setAttribute3f:function r(t,e,n,o){var i=f.getAttribLocation(f.program,t);f.vertexAttrib3f(i,e,n,o)},setAttribute4f:function r(t,e,n,o,i){var a=f.getAttribLocation(f.program,t);f.vertexAttrib4f(a,e,n,o,i)},setAttribute1i:function r(t,e){var n=f.getAttribLocation(f.program,t);f.vertexAttrib1i(n,e)},setAttribute2i:function r(t,e,n){var o=f.getAttribLocation(f.program,t);f.vertexAttrib2i(o,e,n)},setAttribute3i:function r(t,e,n,o){var i=f.getAttribLocation(f.program,t);f.vertexAttrib3i(i,e,n,o)},setAttribute4i:function r(t,e,n,o,i){var a=f.getAttribLocation(f.program,t);f.vertexAttrib4i(a,e,n,o,i)},setUniform1f:function r(t,e){var n=f.getUniformLocation(f.program,t);f.uniform1f(n,e)},setUniform2f:function r(t,e,n){var o=f.getUniformLocation(f.program,t);f.uniform2f(o,e,n)},setUniform3f:function r(t,e,n,o){var i=f.getUniformLocation(f.program,t);f.uniform3f(i,e,n,o)},setUniform4f:function r(t,e,n,o,i){var a=f.getUniformLocation(f.program,t);f.uniform4f(a,e,n,o,i)},setUniform1i:function r(t,e){var n=f.getUniformLocation(f.program,t);f.uniform1i(n,e)},setUniform2i:function r(t,e,n){var o=f.getUniformLocation(f.program,t);f.uniform2i(o,e,n)},setUniform3i:function r(t,e,n,o){var i=f.getUniformLocation(f.program,t);f.uniform3i(i,e,n,o)},setUniform4i:function r(t,e,n,o,i){var a=f.getUniformLocation(f.program,t);f.uniform4i(a,e,n,o,i)},setUniformMatrix2fv:function r(t,e){var n=f.getUniformLocation(f.program,t);f.uniformMatrix2fv(n,false,e)},setUniformMatrix3fv:function r(t,e){var n=f.getUniformLocation(f.program,t);f.uniformMatrix3fv(n,false,e)},setUniformMatrix4fv:function r(t,e){var n=f.getUniformLocation(f.program,t);f.uniformMatrix4fv(n,false,e)}}}function T(o){var i={byte:o.UNSIGNED_BYTE,short:o.UNSIGNED_SHORT};return{openDeep:function r(){o.enable(o.DEPTH_TEST);return this},points:function r(t,e,n){if(n){o.drawElements(o.POINTS,e,i[n],t)}else{o.drawArrays(o.POINTS,t,e)}return this},lines:function r(t,e,n){if(n){o.drawElements(o.LINES,e,i[n],t)}else{o.drawArrays(o.LINES,t,e)}return this},stripLines:function r(t,e,n){if(n){o.drawElements(o.LINE_STRIP,e,i[n],t)}else{o.drawArrays(o.LINE_STRIP,t,e)}return this},loopLines:function r(t,e,n){if(n){o.drawElements(o.LINE_LOOP,e,i[n],t)}else{o.drawArrays(o.LINE_LOOP,t,e)}return this},triangles:function r(t,e,n){if(n){o.drawElements(o.TRIANGLES,e,i[n],t)}else{o.drawArrays(o.TRIANGLES,t,e)}return this},stripTriangles:function r(t,e,n){if(n){o.drawElements(o.TRIANGLE_STRIP,e,i[n],t)}else{o.drawArrays(o.TRIANGLE_STRIP,t,e)}return this},fanTriangles:function r(t,e,n){if(n){o.drawElements(o.TRIANGLE_FAN,e,i[n],t)}else{o.drawArrays(o.TRIANGLE_FAN,t,e)}return this}}}var v=function r(t,e){var n=["webgl","experimental-webgl","webkit-3d","moz-webgl"],o=null,i=void 0;for(i=0;i<n.length;i++){try{o=t.getContext(n[i],e)}catch(r){}if(o)break}if(!o)throw new Error("Non canvas or browser does not support webgl.");return o};function r(r,t){var c=v(r,t),n={_gl_:c,painter:function r(){return T(c)},shader:function r(t,e){c.program=i(c,t,e);return n},buffer:function r(n){a(c,n);var u=void 0,E={write:function r(t,e){e=e||c.STATIC_DRAW;m(c,t,e,n);u=t;return E},use:function r(t,e,n,o,i,a){var f=u.BYTES_PER_ELEMENT;if(typeof t=="string")t=c.getAttribLocation(c.program,t);n=n||0;o=o||0;i=i||c.FLOAT;s(c,t,e,i,n*f,o*f,a);return E}};return E},texture:function f(r,t){var u={"2d":c.TEXTURE_2D,cube:c.TEXTURE_CUBE_MAP}[r];var f=E(c,u,t,r);c.texParameteri(u,c.TEXTURE_MIN_FILTER,c.NEAREST);c.texParameteri(u,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(u,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);var i={useImage:function r(t,e,n,o){A(c,u,e,n,o,t);return i},useCube:function r(t,e,n,o,i,a){g(c,u,o,i,a,t,e,n,f)}};return i}};var e=u(c);for(var o in e){n[o]=e[o]}c.viewport(0,0,c.canvas.width,c.canvas.height);return n}if((typeof module==="undefined"?"undefined":_typeof(module))==="object"&&_typeof(module.exports)==="object"){module.exports=r}else{var t=window.image3DCore;image3D.noConflict=function(){if(window.image3DCore===r){window.image3DCore=t}return r};window.image3DCore=r}})();
\No newline at end of file