ezuikit-js 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/demos/EZUIKitHD/EZUIKitHD.html +171 -0
  2. package/demos/EZUIKitHD/js/jsWebControl-1.0.0.min.js +80 -0
  3. package/demos/base-demo/base.html +116 -116
  4. package/demos/base-demo/ezuikit.js +4405 -258
  5. package/demos/base-demo/ezuikit_static/v65/v1/js/SuperRender_10.js +394 -394
  6. package/demos/base-demo/ezuikit_static/v65/v1/js/playctrl/DecodeWorker.js +617 -617
  7. package/demos/base-demo/ezuikit_static/v65/v1/js/playctrl/JSPlaySDKInterface.js +2052 -2052
  8. package/demos/base-demo/ezuikit_static/v65/v1/js/playctrl/SuperRender_10.js +395 -395
  9. package/demos/base-demo/ezuikit_static/v65/v1/js/transform/SystemTransform.js +22 -22
  10. package/demos/base-demo/ezuikit_static/v65/v1/js/tts-v4.js +346 -346
  11. package/demos/base-demo/ezuikit_static/v65/v1/rec/jquery.min.js +1 -1
  12. package/demos/base-demo/ezuikit_static/v65/v1/talk/tts-v4.js +346 -346
  13. package/demos/base-demo/ezuikit_static/v65/v2/rec/jquery.min.js +1 -1
  14. package/demos/base-demo/ezuikit_static/v65/v2/talk/tts-v4.js +343 -343
  15. package/demos/base-demo/ezuikit_static/v66/v1/css/theme.css +121 -0
  16. package/demos/base-demo/ezuikit_static/v66/v1/js/AudioRenderer.js +225 -0
  17. package/demos/base-demo/ezuikit_static/v66/v1/js/SuperRender_10.js +395 -0
  18. package/demos/base-demo/ezuikit_static/v66/v1/js/SystemTransform.js +22 -0
  19. package/demos/base-demo/ezuikit_static/v66/v1/js/SystemTransform.js.mem +0 -0
  20. package/demos/base-demo/ezuikit_static/v66/v1/js/jsPluginV1-1.0.0.min.js +26 -0
  21. package/demos/base-demo/ezuikit_static/v66/v1/js/playctrl/AudioRenderer.js +225 -0
  22. package/demos/base-demo/ezuikit_static/v66/v1/js/playctrl/DecodeWorker.js +618 -0
  23. package/demos/base-demo/ezuikit_static/v66/v1/js/playctrl/Decoder.js +1 -0
  24. package/demos/base-demo/ezuikit_static/v66/v1/js/playctrl/JSPlaySDKInterface.js +2052 -0
  25. package/demos/base-demo/ezuikit_static/v66/v1/js/playctrl/SuperRender_10.js +396 -0
  26. package/demos/base-demo/ezuikit_static/v66/v1/js/playctrl/SuperRender_20.js +1 -0
  27. package/demos/base-demo/ezuikit_static/v66/v1/js/transform/SystemTransform.js +22 -0
  28. package/demos/base-demo/ezuikit_static/v66/v1/js/transform/SystemTransform.js.mem +0 -0
  29. package/demos/base-demo/ezuikit_static/v66/v1/js/transform/systemTransform-worker.min.js +1 -0
  30. package/demos/base-demo/ezuikit_static/v66/v1/js/tts-v4.js +346 -0
  31. package/demos/base-demo/ezuikit_static/v66/v1/rec/datepicker.js +1522 -0
  32. package/demos/base-demo/ezuikit_static/v66/v1/rec/datepicker.min.css +36 -0
  33. package/demos/base-demo/ezuikit_static/v66/v1/rec/datepicker.zh-CN.js +19 -0
  34. package/demos/base-demo/ezuikit_static/v66/v1/rec/jquery.min.js +2 -0
  35. package/demos/base-demo/ezuikit_static/v66/v1/speed/speed.css +144 -0
  36. package/demos/base-demo/ezuikit_static/v66/v1/talk/adapeter.js +5497 -0
  37. package/demos/base-demo/ezuikit_static/v66/v1/talk/janus.js +3507 -0
  38. package/demos/base-demo/ezuikit_static/v66/v1/talk/tts-v4.js +346 -0
  39. package/demos/base-demo/ezuikit_static/v66/v2/css/theme.css +121 -0
  40. package/demos/base-demo/ezuikit_static/v66/v2/js/Decoder.js +9198 -0
  41. package/demos/base-demo/ezuikit_static/v66/v2/js/Decoder.wasm +0 -0
  42. package/demos/base-demo/ezuikit_static/v66/v2/js/jsPluginV2-2.0.1.min.js +4662 -0
  43. package/demos/base-demo/ezuikit_static/v66/v2/rec/datepicker.js +1522 -0
  44. package/demos/base-demo/ezuikit_static/v66/v2/rec/datepicker.min.css +36 -0
  45. package/demos/base-demo/ezuikit_static/v66/v2/rec/datepicker.zh-CN.js +19 -0
  46. package/demos/base-demo/ezuikit_static/v66/v2/rec/jquery.min.js +2 -0
  47. package/demos/base-demo/ezuikit_static/v66/v2/speed/speed.css +144 -0
  48. package/demos/base-demo/ezuikit_static/v66/v2/talk/adapeter.js +5497 -0
  49. package/demos/base-demo/ezuikit_static/v66/v2/talk/janus.js +3507 -0
  50. package/demos/base-demo/ezuikit_static/v66/v2/talk/tts-v4.js +343 -0
  51. package/demos/base-demo/hls.html +23 -23
  52. package/demos/base-demo/index.html +116 -116
  53. package/demos/base-demo/localDecoder.html +117 -117
  54. package/demos/base-demo/mobileLive.html +116 -116
  55. package/demos/base-demo/mobileRec.html +115 -115
  56. package/demos/base-demo/multi.html +128 -128
  57. package/demos/base-demo/pcLive.html +116 -116
  58. package/demos/base-demo/pcRec.html +115 -115
  59. package/demos/base-demo/template.html +123 -123
  60. package/demos/base-demo/themeData.html +231 -231
  61. package/demos/nginx-demo/conf/fastcgi.conf +26 -26
  62. package/demos/nginx-demo/conf/fastcgi_params +25 -25
  63. package/demos/nginx-demo/conf/koi-utf +109 -109
  64. package/demos/nginx-demo/conf/koi-win +103 -103
  65. package/demos/nginx-demo/conf/mime.types +95 -95
  66. package/demos/nginx-demo/conf/nginx.conf +121 -121
  67. package/demos/nginx-demo/conf/scgi_params +17 -17
  68. package/demos/nginx-demo/conf/uwsgi_params +17 -17
  69. package/demos/nginx-demo/conf/win-utf +126 -126
  70. package/demos/nginx-demo/contrib/README +21 -21
  71. package/demos/nginx-demo/contrib/geo2nginx.pl +58 -58
  72. package/demos/nginx-demo/contrib/unicode2nginx/koi-utf +131 -131
  73. package/demos/nginx-demo/contrib/unicode2nginx/unicode-to-nginx.pl +48 -48
  74. package/demos/nginx-demo/contrib/unicode2nginx/win-utf +130 -130
  75. package/demos/nginx-demo/contrib/vim/ftdetect/nginx.vim +4 -4
  76. package/demos/nginx-demo/contrib/vim/ftplugin/nginx.vim +1 -1
  77. package/demos/nginx-demo/contrib/vim/indent/nginx.vim +11 -11
  78. package/demos/nginx-demo/contrib/vim/syntax/nginx.vim +2268 -2268
  79. package/demos/nginx-demo/docs/CHANGES +8115 -8115
  80. package/demos/nginx-demo/docs/CHANGES.ru +8252 -8252
  81. package/demos/nginx-demo/docs/LICENSE +26 -26
  82. package/demos/nginx-demo/docs/OpenSSL.LICENSE +127 -127
  83. package/demos/nginx-demo/docs/PCRE.LICENCE +93 -93
  84. package/demos/nginx-demo/docs/README +3 -3
  85. package/demos/nginx-demo/docs/zlib.LICENSE +20 -20
  86. package/demos/nginx-demo/html/50x.html +21 -21
  87. package/demos/nginx-demo/html/ezuikit5/ezuikit.js +29 -29
  88. package/demos/nginx-demo/html/ezuikit5/index.html +116 -116
  89. package/demos/nginx-demo/html/ezuikit5/server.js +67 -67
  90. package/demos/nginx-demo/html/index.html +16 -16
  91. package/demos/nginx-demo/html/js/adapeter.js +5496 -5496
  92. package/demos/nginx-demo/html/js/janus.js +3507 -3507
  93. package/demos/nginx-demo/html/js/jquery.min.js +1 -1
  94. package/demos/nginx-demo/html/js/sts.js +340 -340
  95. package/demos/nginx-demo/logs/access.log +109 -109
  96. package/demos/nginx-demo/logs/error.log +15 -15
  97. package/demos/nginx-demo/logs/nginx.pid +1 -1
  98. package/demos/react-demo/README.md +68 -68
  99. package/demos/react-demo/package.json +36 -36
  100. package/demos/react-demo/public/index.html +43 -43
  101. package/demos/react-demo/public/manifest.json +25 -25
  102. package/demos/react-demo/public/robots.txt +3 -3
  103. package/demos/react-demo/src/App.css +38 -38
  104. package/demos/react-demo/src/App.js +114 -114
  105. package/demos/react-demo/src/App.test.js +9 -9
  106. package/demos/react-demo/src/index.css +13 -13
  107. package/demos/react-demo/src/index.js +17 -17
  108. package/demos/react-demo/src/logo.svg +7 -7
  109. package/demos/react-demo/src/serviceWorker.js +141 -141
  110. package/demos/react-demo/src/setupTests.js +5 -5
  111. package/demos/vue-demo/README.md +24 -24
  112. package/demos/vue-demo/babel.config.js +5 -5
  113. package/demos/vue-demo/package.json +43 -43
  114. package/demos/vue-demo/public/index.html +17 -17
  115. package/demos/vue-demo/src/App.vue +27 -27
  116. package/demos/vue-demo/src/components/EZUIKitJs.vue +115 -115
  117. package/demos/vue-demo/src/main.js +8 -8
  118. package/ezuikit.js +4342 -217
  119. package/ezuikit_static/v65/v1/js/SuperRender_10.js +394 -394
  120. package/ezuikit_static/v65/v1/js/playctrl/DecodeWorker.js +617 -617
  121. package/ezuikit_static/v65/v1/js/playctrl/JSPlaySDKInterface.js +2052 -2052
  122. package/ezuikit_static/v65/v1/js/playctrl/SuperRender_10.js +395 -395
  123. package/ezuikit_static/v65/v1/js/transform/SystemTransform.js +22 -22
  124. package/ezuikit_static/v65/v1/js/tts-v4.js +346 -346
  125. package/ezuikit_static/v65/v1/rec/jquery.min.js +1 -1
  126. package/ezuikit_static/v65/v1/talk/tts-v4.js +346 -346
  127. package/ezuikit_static/v65/v2/js/jsPluginV2-2.0.1.min.js +74 -11
  128. package/ezuikit_static/v65/v2/rec/jquery.min.js +1 -1
  129. package/ezuikit_static/v65/v2/talk/tts-v4.js +343 -343
  130. package/ezuikit_static/v66/v1/css/theme.css +121 -0
  131. package/ezuikit_static/v66/v1/js/AudioRenderer.js +225 -0
  132. package/ezuikit_static/v66/v1/js/SuperRender_10.js +395 -0
  133. package/ezuikit_static/v66/v1/js/SystemTransform.js +22 -0
  134. package/ezuikit_static/v66/v1/js/SystemTransform.js.mem +0 -0
  135. package/ezuikit_static/v66/v1/js/jsPluginV1-1.0.0.min.js +26 -0
  136. package/ezuikit_static/v66/v1/js/playctrl/AudioRenderer.js +225 -0
  137. package/ezuikit_static/v66/v1/js/playctrl/DecodeWorker.js +618 -0
  138. package/ezuikit_static/v66/v1/js/playctrl/Decoder.js +1 -0
  139. package/ezuikit_static/v66/v1/js/playctrl/JSPlaySDKInterface.js +2052 -0
  140. package/ezuikit_static/v66/v1/js/playctrl/SuperRender_10.js +396 -0
  141. package/ezuikit_static/v66/v1/js/playctrl/SuperRender_20.js +1 -0
  142. package/ezuikit_static/v66/v1/js/transform/SystemTransform.js +22 -0
  143. package/ezuikit_static/v66/v1/js/transform/SystemTransform.js.mem +0 -0
  144. package/ezuikit_static/v66/v1/js/transform/systemTransform-worker.min.js +1 -0
  145. package/ezuikit_static/v66/v1/js/tts-v4.js +346 -0
  146. package/ezuikit_static/v66/v1/rec/datepicker.js +1522 -0
  147. package/ezuikit_static/v66/v1/rec/datepicker.min.css +36 -0
  148. package/ezuikit_static/v66/v1/rec/datepicker.zh-CN.js +19 -0
  149. package/ezuikit_static/v66/v1/rec/jquery.min.js +2 -0
  150. package/ezuikit_static/v66/v1/speed/speed.css +144 -0
  151. package/ezuikit_static/v66/v1/talk/adapeter.js +5497 -0
  152. package/ezuikit_static/v66/v1/talk/janus.js +3507 -0
  153. package/ezuikit_static/v66/v1/talk/tts-v4.js +346 -0
  154. package/ezuikit_static/v66/v2/css/theme.css +121 -0
  155. package/ezuikit_static/v66/v2/js/Decoder.js +9198 -0
  156. package/ezuikit_static/v66/v2/js/Decoder.wasm +0 -0
  157. package/ezuikit_static/v66/v2/js/jsPluginV2-2.0.1.min.js +4662 -0
  158. package/ezuikit_static/v66/v2/rec/datepicker.js +1522 -0
  159. package/ezuikit_static/v66/v2/rec/datepicker.min.css +36 -0
  160. package/ezuikit_static/v66/v2/rec/datepicker.zh-CN.js +19 -0
  161. package/ezuikit_static/v66/v2/rec/jquery.min.js +2 -0
  162. package/ezuikit_static/v66/v2/speed/speed.css +144 -0
  163. package/ezuikit_static/v66/v2/talk/adapeter.js +5497 -0
  164. package/ezuikit_static/v66/v2/talk/janus.js +3507 -0
  165. package/ezuikit_static/v66/v2/talk/tts-v4.js +343 -0
  166. package/package.json +1 -1
@@ -1,396 +1,396 @@
1
- "use strict";
2
- //顶点着色器
3
- //attribute修饰符用于声明由浏览器(javascript)传输给顶点着色器的变量值;
4
- // vertexPos即我们定义的顶点坐标;
5
- // gl_Position是一个内建的传出变量。
6
- var vertexYUVShader = [
7
- 'attribute vec4 vertexPos;',
8
- 'attribute vec2 texturePos;',
9
- 'varying vec2 textureCoord;',
10
-
11
- 'void main()',
12
- '{',
13
- 'gl_Position = vertexPos;',
14
- 'textureCoord = texturePos;',
15
- '}'
16
- ].join('\n');
17
- //像素着色器(yuv->rgb)
18
- var fragmentYUVShader = [
19
- 'precision highp float;',
20
- 'varying highp vec2 textureCoord;',
21
- 'uniform sampler2D ySampler;',
22
- 'uniform sampler2D uSampler;',
23
- 'uniform sampler2D vSampler;',
24
- 'const mat4 YUV2RGB = mat4',
25
- '(',
26
- '1.1643828125, 0, 1.59602734375, -.87078515625,',
27
- '1.1643828125, -.39176171875, -.81296875, .52959375,',
28
- '1.1643828125, 2.017234375, 0, -1.081390625,',
29
- '0, 0, 0, 1',
30
- ');',
31
-
32
- 'void main(void) {',
33
- 'highp float y = texture2D(ySampler, textureCoord).r;',
34
- 'highp float u = texture2D(uSampler, textureCoord).r;',
35
- 'highp float v = texture2D(vSampler, textureCoord).r;',
36
- 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',
37
- '}'
38
- ].join('\n');
39
-
40
- (function (root, factory) {
41
- root.SuperRender = factory();
42
- }(this, function () {
43
-
44
- function RenderManager(canvas) {
45
-
46
- this.canvasElement = document.getElementById(canvas);
47
-
48
- this.initContextGL();
49
-
50
- if(this.contextGL) {
51
- this.YUVProgram = this.initProgram(vertexYUVShader, fragmentYUVShader);
52
- this.initBuffers();
53
- this.initTextures();
54
- }
55
- };
56
-
57
- /**
58
- * 初始化WebGL上下文
59
- */
60
- RenderManager.prototype.initContextGL = function() {
61
-
62
- var canvas = this.canvasElement;
63
-
64
- var gl = null;
65
-
66
- try {
67
- gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
68
- } catch (e) {
69
- gl = null;
70
- }
71
-
72
- if(!gl || typeof gl.getParameter !== "function") {
73
- gl = null;
74
- }
75
-
76
- this.contextGL = gl;
77
-
78
- console.log("WebGL1.0");
79
- };
80
-
81
- /**
82
- * 初始化着色器程序
83
- * @param vertexShaderScript 顶点着色器脚本
84
- * @param fragmentShaderScript 片段着色器脚本
85
- */
86
- RenderManager.prototype.initProgram = function(vertexShaderScript, fragmentShaderScript) {
87
-
88
- var gl = this.contextGL;
89
-
90
- var vertexShader = gl.createShader(gl.VERTEX_SHADER); //创建定点着色器
91
- gl.shaderSource(vertexShader, vertexShaderScript);
92
- gl.compileShader(vertexShader);
93
- if(!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {
94
- console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));
95
- }
96
-
97
- var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
98
- gl.shaderSource(fragmentShader, fragmentShaderScript);
99
- gl.compileShader(fragmentShader);
100
- if(!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {
101
- console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));
102
- }
103
-
104
- var program = gl.createProgram();
105
- gl.attachShader(program, vertexShader);
106
- gl.attachShader(program, fragmentShader);
107
- gl.linkProgram(program);
108
- if(!gl.getProgramParameter(program, gl.LINK_STATUS)) {
109
- console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));
110
- }
111
-
112
- gl.deleteShader(vertexShader);
113
- gl.deleteShader(fragmentShader);
114
-
115
- return program;
116
- };
117
-
118
- /**
119
- * 初始化数据缓存
120
- */
121
- RenderManager.prototype.initBuffers = function() {
122
-
123
- var gl = this.contextGL;
124
-
125
- var vertexPosBuffer = gl.createBuffer();
126
- gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);
127
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);
128
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
129
-
130
- var texturePosBuffer = gl.createBuffer();
131
- gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);
132
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.DYNAMIC_DRAW);
133
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
134
-
135
- this.vertexPosBuffer = vertexPosBuffer;
136
- this.texturePosBuffer = texturePosBuffer;
137
- };
138
-
139
- /**
140
- * 创建纹理
141
- */
142
- RenderManager.prototype.initTexture = function() {
143
-
144
- var gl = this.contextGL;
145
-
146
- var textureRef = gl.createTexture();
147
- gl.bindTexture(gl.TEXTURE_2D, textureRef);
148
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
149
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
150
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
151
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
152
- gl.bindTexture(gl.TEXTURE_2D, null);
153
-
154
- return textureRef;
155
- };
156
-
157
- /**
158
- * 初始化YUV纹理
159
- */
160
- RenderManager.prototype.initTextures = function() {
161
-
162
- var gl = this.contextGL;
163
-
164
- var program = this.YUVProgram;
165
- gl.useProgram(program);
166
-
167
- var yTextureRef = this.initTexture();
168
- var ySamplerRef = gl.getUniformLocation(program, 'ySampler');
169
- gl.uniform1i(ySamplerRef, 0);
170
- this.yTextureRef = yTextureRef;
171
-
172
- var uTextureRef = this.initTexture();
173
- var uSamplerRef = gl.getUniformLocation(program, 'uSampler');
174
- gl.uniform1i(uSamplerRef, 1);
175
- this.uTextureRef = uTextureRef;
176
-
177
- var vTextureRef = this.initTexture();
178
- var vSamplerRef = gl.getUniformLocation(program, 'vSampler');
179
- gl.uniform1i(vSamplerRef, 2);
180
- this.vTextureRef = vTextureRef;
181
-
182
- gl.useProgram(null);
183
- };
184
-
185
- /**
186
- * 显示帧数据
187
- * @param nWidth 宽度
188
- * @param nHeight 高度
189
- * @param nHeight 帧数据
190
- */
191
- RenderManager.prototype.SR_DisplayFrameData = function(nWidth, nHeight, pData,dWidth,dHeight) {
192
-
193
- if(nWidth <= 0 || nHeight <= 0)
194
- {
195
- return;
196
- }
197
-
198
- var gl = this.contextGL;
199
-
200
- if(null == pData)
201
- {
202
- gl.clearColor(0.0, 0.0, 0.0, 0.0);
203
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
204
- return;
205
- }
206
-
207
- var canvas = this.canvasElement;
208
-
209
- this.nWindowWidth = canvas.width;
210
- this.nWindowHeight = canvas.height;
211
-
212
- var nWindowWidth = this.nWindowWidth;
213
- var nWindowHeight = this.nWindowHeight;
214
-
215
- gl.clearColor(0.8, 0.8, 1.0, 1.0);
216
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
217
-
218
- gl.viewport(0, 0, nWindowWidth, nWindowHeight);
219
-
220
- this.updateFrameData(nWidth, nHeight, pData,dWidth,dHeight);
221
-
222
- var program = this.YUVProgram;
223
- gl.useProgram(program);
224
-
225
- var vertexPosBuffer = this.vertexPosBuffer;
226
- gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);
227
- var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');
228
- gl.enableVertexAttribArray(vertexPosRef);
229
- gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);
230
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
231
-
232
- var texturePosBuffer = this.texturePosBuffer;
233
- gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);
234
- var texturePosRef = gl.getAttribLocation(program, 'texturePos');
235
- gl.enableVertexAttribArray(texturePosRef);
236
- gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);
237
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
238
-
239
- gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
240
-
241
- gl.disableVertexAttribArray(vertexPosRef);
242
- gl.disableVertexAttribArray(texturePosRef);
243
-
244
- gl.useProgram(null);
245
- };
246
-
247
- /**
248
- * 上传YUV数据到纹理
249
- * @param nWidth 宽度
250
- * @param nHeight 高度
251
- * @param nHeight 帧数据
252
- */
253
- RenderManager.prototype.updateFrameData = function(width, height, data,dWidth,dHeight) {
254
-
255
- var gl = this.contextGL;
256
-
257
- var yTextureRef = this.yTextureRef;
258
- var uTextureRef = this.uTextureRef;
259
- var vTextureRef = this.vTextureRef;
260
-
261
- var i420Data = data;
262
- // debugger;
263
- if(width == dWidth && height == dHeight)
264
- {
265
- var yDataLength = width * height;
266
- var yData = i420Data.subarray(0, yDataLength);
267
- gl.activeTexture(gl.TEXTURE0);
268
- gl.bindTexture(gl.TEXTURE_2D, yTextureRef);
269
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width, height, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, yData);
270
-
271
- var cbDataLength = width/2 * height/2;
272
- var cbData = i420Data.subarray(width*height, width*height + cbDataLength);
273
- gl.activeTexture(gl.TEXTURE2);
274
- gl.bindTexture(gl.TEXTURE_2D, vTextureRef);
275
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width/2, height/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, cbData);
276
-
277
- var crDataLength = cbDataLength;
278
- var crData = i420Data.subarray(width*height + width*height/4, width*height + width*height/4 + crDataLength);
279
- gl.activeTexture(gl.TEXTURE1);
280
- gl.bindTexture(gl.TEXTURE_2D, uTextureRef);
281
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width/2, height/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, crData);
282
-
283
- }
284
- else
285
- {
286
- // //裁剪宽
287
- var yDataLength = dWidth * dHeight;
288
- var yData=new Uint8Array(yDataLength) ;
289
- for(var i=0;i<dHeight;i++)
290
- {
291
- //var ySonData=new Uint8Array(dWidth) ;
292
- var ySonData = i420Data.subarray(i*width, i*width+dWidth);
293
- for (var j = 0; j < dWidth; j++) {
294
- yData[i*dWidth + j] = ySonData[j];
295
- }
296
- }
297
- gl.activeTexture(gl.TEXTURE0);
298
- gl.bindTexture(gl.TEXTURE_2D, yTextureRef);
299
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, dWidth, dHeight, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, yData);
300
- yData=null;
301
- ySonData=null;
302
-
303
- var cbDataLength = dWidth/2 * dHeight/2;
304
- var cbData =new Uint8Array(cbDataLength);
305
- //var cbSonData=new Uint8Array(dWidth/2) ;
306
- for(var i=0;i<dHeight/2;i++)
307
- {
308
- var cbSonData = i420Data.subarray(width*height+i*width/2, width*height+i*width/2+dWidth/2);
309
- for (var j = 0; j < dWidth/2; j++) {
310
- cbData[i*dWidth/2 + j] = cbSonData[j];
311
- }
312
- }
313
- gl.activeTexture(gl.TEXTURE2);
314
- gl.bindTexture(gl.TEXTURE_2D, vTextureRef);
315
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, dWidth/2, dHeight/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, cbData);
316
- cbData=null;
317
- cbSonData=null;
318
-
319
- var crDataLength = cbDataLength;
320
- var crData = new Uint8Array(crDataLength);
321
- for(var i=0;i<dHeight/2;i++)
322
- {
323
- var crSonData = i420Data.subarray(width*height*5/4+i*width/2, width*height*5/4+i*width/2+dWidth/2);
324
- for (var j = 0; j < dWidth/2; j++) {
325
- crData[i*dWidth/2 + j] = crSonData[j];
326
- }
327
- }
328
- gl.activeTexture(gl.TEXTURE1);
329
- gl.bindTexture(gl.TEXTURE_2D, uTextureRef);
330
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, dWidth/2, dHeight/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, crData);
331
- crData=null;
332
- crSonData=null;
333
- }
334
-
335
- };
336
-
337
- /**
338
- * 设置显示区域
339
- * @param stDisplayRect 显示区域
340
- */
341
- RenderManager.prototype.SR_SetDisplayRect = function(stDisplayRect) {
342
-
343
- var gl = this.contextGL;
344
-
345
- var nWindowWidth = this.nWindowWidth;
346
- var nWindowHeight = this.nWindowHeight;
347
-
348
- var texturePosValues = null;
349
-
350
- if(stDisplayRect && nWindowWidth > 0 && nWindowHeight > 0) {
351
- var fLeft = stDisplayRect.left / nWindowWidth;
352
- var fTop = stDisplayRect.top / nWindowHeight;
353
- var fRight = stDisplayRect.right / nWindowWidth;
354
- var fBottom = stDisplayRect.bottom / nWindowHeight;
355
-
356
- texturePosValues = new Float32Array([fRight, fTop, fLeft, fTop, fRight, fBottom, fLeft, fBottom]);
357
- }
358
- else {
359
- texturePosValues = new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]);
360
- }
361
-
362
- var texturePosBuffer = this.texturePosBuffer;
363
-
364
- gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);
365
- gl.bufferSubData(gl.ARRAY_BUFFER, 0, texturePosValues);
366
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
367
- };
368
-
369
- /**
370
- * 释放显示资源
371
- */
372
- RenderManager.prototype.SR_Destroy = function() {
373
-
374
- var gl = this.contextGL;
375
-
376
- var YUVProgram = this.YUVProgram;
377
- gl.deleteProgram(YUVProgram);
378
-
379
- var vertexPosBuffer = this.vertexPosBuffer;
380
- var texturePosBuffer = this.texturePosBuffer;
381
-
382
- gl.deleteBuffer(vertexPosBuffer);
383
- gl.deleteBuffer(texturePosBuffer);
384
-
385
- var yTextureRef = this.yTextureRef;
386
- var uTextureRef = this.uTextureRef;
387
- var vTextureRef = this.vTextureRef;
388
- gl.deleteTexture(yTextureRef);
389
- gl.deleteTexture(uTextureRef);
390
- gl.deleteTexture(vTextureRef);
391
- //gl.getExtension('WEBGL_lose_context').loseContext();
392
- };
393
-
394
- return RenderManager;
395
-
1
+ "use strict";
2
+ //顶点着色器
3
+ //attribute修饰符用于声明由浏览器(javascript)传输给顶点着色器的变量值;
4
+ // vertexPos即我们定义的顶点坐标;
5
+ // gl_Position是一个内建的传出变量。
6
+ var vertexYUVShader = [
7
+ 'attribute vec4 vertexPos;',
8
+ 'attribute vec2 texturePos;',
9
+ 'varying vec2 textureCoord;',
10
+
11
+ 'void main()',
12
+ '{',
13
+ 'gl_Position = vertexPos;',
14
+ 'textureCoord = texturePos;',
15
+ '}'
16
+ ].join('\n');
17
+ //像素着色器(yuv->rgb)
18
+ var fragmentYUVShader = [
19
+ 'precision highp float;',
20
+ 'varying highp vec2 textureCoord;',
21
+ 'uniform sampler2D ySampler;',
22
+ 'uniform sampler2D uSampler;',
23
+ 'uniform sampler2D vSampler;',
24
+ 'const mat4 YUV2RGB = mat4',
25
+ '(',
26
+ '1.1643828125, 0, 1.59602734375, -.87078515625,',
27
+ '1.1643828125, -.39176171875, -.81296875, .52959375,',
28
+ '1.1643828125, 2.017234375, 0, -1.081390625,',
29
+ '0, 0, 0, 1',
30
+ ');',
31
+
32
+ 'void main(void) {',
33
+ 'highp float y = texture2D(ySampler, textureCoord).r;',
34
+ 'highp float u = texture2D(uSampler, textureCoord).r;',
35
+ 'highp float v = texture2D(vSampler, textureCoord).r;',
36
+ 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',
37
+ '}'
38
+ ].join('\n');
39
+
40
+ (function (root, factory) {
41
+ root.SuperRender = factory();
42
+ }(this, function () {
43
+
44
+ function RenderManager(canvas) {
45
+
46
+ this.canvasElement = document.getElementById(canvas);
47
+
48
+ this.initContextGL();
49
+
50
+ if(this.contextGL) {
51
+ this.YUVProgram = this.initProgram(vertexYUVShader, fragmentYUVShader);
52
+ this.initBuffers();
53
+ this.initTextures();
54
+ }
55
+ };
56
+
57
+ /**
58
+ * 初始化WebGL上下文
59
+ */
60
+ RenderManager.prototype.initContextGL = function() {
61
+
62
+ var canvas = this.canvasElement;
63
+
64
+ var gl = null;
65
+
66
+ try {
67
+ gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
68
+ } catch (e) {
69
+ gl = null;
70
+ }
71
+
72
+ if(!gl || typeof gl.getParameter !== "function") {
73
+ gl = null;
74
+ }
75
+
76
+ this.contextGL = gl;
77
+
78
+ console.log("WebGL1.0");
79
+ };
80
+
81
+ /**
82
+ * 初始化着色器程序
83
+ * @param vertexShaderScript 顶点着色器脚本
84
+ * @param fragmentShaderScript 片段着色器脚本
85
+ */
86
+ RenderManager.prototype.initProgram = function(vertexShaderScript, fragmentShaderScript) {
87
+
88
+ var gl = this.contextGL;
89
+
90
+ var vertexShader = gl.createShader(gl.VERTEX_SHADER); //创建定点着色器
91
+ gl.shaderSource(vertexShader, vertexShaderScript);
92
+ gl.compileShader(vertexShader);
93
+ if(!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {
94
+ console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));
95
+ }
96
+
97
+ var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
98
+ gl.shaderSource(fragmentShader, fragmentShaderScript);
99
+ gl.compileShader(fragmentShader);
100
+ if(!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {
101
+ console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));
102
+ }
103
+
104
+ var program = gl.createProgram();
105
+ gl.attachShader(program, vertexShader);
106
+ gl.attachShader(program, fragmentShader);
107
+ gl.linkProgram(program);
108
+ if(!gl.getProgramParameter(program, gl.LINK_STATUS)) {
109
+ console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));
110
+ }
111
+
112
+ gl.deleteShader(vertexShader);
113
+ gl.deleteShader(fragmentShader);
114
+
115
+ return program;
116
+ };
117
+
118
+ /**
119
+ * 初始化数据缓存
120
+ */
121
+ RenderManager.prototype.initBuffers = function() {
122
+
123
+ var gl = this.contextGL;
124
+
125
+ var vertexPosBuffer = gl.createBuffer();
126
+ gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);
127
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);
128
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
129
+
130
+ var texturePosBuffer = gl.createBuffer();
131
+ gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);
132
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.DYNAMIC_DRAW);
133
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
134
+
135
+ this.vertexPosBuffer = vertexPosBuffer;
136
+ this.texturePosBuffer = texturePosBuffer;
137
+ };
138
+
139
+ /**
140
+ * 创建纹理
141
+ */
142
+ RenderManager.prototype.initTexture = function() {
143
+
144
+ var gl = this.contextGL;
145
+
146
+ var textureRef = gl.createTexture();
147
+ gl.bindTexture(gl.TEXTURE_2D, textureRef);
148
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
149
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
150
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
151
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
152
+ gl.bindTexture(gl.TEXTURE_2D, null);
153
+
154
+ return textureRef;
155
+ };
156
+
157
+ /**
158
+ * 初始化YUV纹理
159
+ */
160
+ RenderManager.prototype.initTextures = function() {
161
+
162
+ var gl = this.contextGL;
163
+
164
+ var program = this.YUVProgram;
165
+ gl.useProgram(program);
166
+
167
+ var yTextureRef = this.initTexture();
168
+ var ySamplerRef = gl.getUniformLocation(program, 'ySampler');
169
+ gl.uniform1i(ySamplerRef, 0);
170
+ this.yTextureRef = yTextureRef;
171
+
172
+ var uTextureRef = this.initTexture();
173
+ var uSamplerRef = gl.getUniformLocation(program, 'uSampler');
174
+ gl.uniform1i(uSamplerRef, 1);
175
+ this.uTextureRef = uTextureRef;
176
+
177
+ var vTextureRef = this.initTexture();
178
+ var vSamplerRef = gl.getUniformLocation(program, 'vSampler');
179
+ gl.uniform1i(vSamplerRef, 2);
180
+ this.vTextureRef = vTextureRef;
181
+
182
+ gl.useProgram(null);
183
+ };
184
+
185
+ /**
186
+ * 显示帧数据
187
+ * @param nWidth 宽度
188
+ * @param nHeight 高度
189
+ * @param nHeight 帧数据
190
+ */
191
+ RenderManager.prototype.SR_DisplayFrameData = function(nWidth, nHeight, pData,dWidth,dHeight) {
192
+
193
+ if(nWidth <= 0 || nHeight <= 0)
194
+ {
195
+ return;
196
+ }
197
+
198
+ var gl = this.contextGL;
199
+
200
+ if(null == pData)
201
+ {
202
+ gl.clearColor(0.0, 0.0, 0.0, 0.0);
203
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
204
+ return;
205
+ }
206
+
207
+ var canvas = this.canvasElement;
208
+
209
+ this.nWindowWidth = canvas.width;
210
+ this.nWindowHeight = canvas.height;
211
+
212
+ var nWindowWidth = this.nWindowWidth;
213
+ var nWindowHeight = this.nWindowHeight;
214
+
215
+ gl.clearColor(0.8, 0.8, 1.0, 1.0);
216
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
217
+
218
+ gl.viewport(0, 0, nWindowWidth, nWindowHeight);
219
+
220
+ this.updateFrameData(nWidth, nHeight, pData,dWidth,dHeight);
221
+
222
+ var program = this.YUVProgram;
223
+ gl.useProgram(program);
224
+
225
+ var vertexPosBuffer = this.vertexPosBuffer;
226
+ gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);
227
+ var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');
228
+ gl.enableVertexAttribArray(vertexPosRef);
229
+ gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);
230
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
231
+
232
+ var texturePosBuffer = this.texturePosBuffer;
233
+ gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);
234
+ var texturePosRef = gl.getAttribLocation(program, 'texturePos');
235
+ gl.enableVertexAttribArray(texturePosRef);
236
+ gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);
237
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
238
+
239
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
240
+
241
+ gl.disableVertexAttribArray(vertexPosRef);
242
+ gl.disableVertexAttribArray(texturePosRef);
243
+
244
+ gl.useProgram(null);
245
+ };
246
+
247
+ /**
248
+ * 上传YUV数据到纹理
249
+ * @param nWidth 宽度
250
+ * @param nHeight 高度
251
+ * @param nHeight 帧数据
252
+ */
253
+ RenderManager.prototype.updateFrameData = function(width, height, data,dWidth,dHeight) {
254
+
255
+ var gl = this.contextGL;
256
+
257
+ var yTextureRef = this.yTextureRef;
258
+ var uTextureRef = this.uTextureRef;
259
+ var vTextureRef = this.vTextureRef;
260
+
261
+ var i420Data = data;
262
+ // debugger;
263
+ if(width == dWidth && height == dHeight)
264
+ {
265
+ var yDataLength = width * height;
266
+ var yData = i420Data.subarray(0, yDataLength);
267
+ gl.activeTexture(gl.TEXTURE0);
268
+ gl.bindTexture(gl.TEXTURE_2D, yTextureRef);
269
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width, height, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, yData);
270
+
271
+ var cbDataLength = width/2 * height/2;
272
+ var cbData = i420Data.subarray(width*height, width*height + cbDataLength);
273
+ gl.activeTexture(gl.TEXTURE2);
274
+ gl.bindTexture(gl.TEXTURE_2D, vTextureRef);
275
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width/2, height/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, cbData);
276
+
277
+ var crDataLength = cbDataLength;
278
+ var crData = i420Data.subarray(width*height + width*height/4, width*height + width*height/4 + crDataLength);
279
+ gl.activeTexture(gl.TEXTURE1);
280
+ gl.bindTexture(gl.TEXTURE_2D, uTextureRef);
281
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, width/2, height/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, crData);
282
+
283
+ }
284
+ else
285
+ {
286
+ // //裁剪宽
287
+ var yDataLength = dWidth * dHeight;
288
+ var yData=new Uint8Array(yDataLength) ;
289
+ for(var i=0;i<dHeight;i++)
290
+ {
291
+ //var ySonData=new Uint8Array(dWidth) ;
292
+ var ySonData = i420Data.subarray(i*width, i*width+dWidth);
293
+ for (var j = 0; j < dWidth; j++) {
294
+ yData[i*dWidth + j] = ySonData[j];
295
+ }
296
+ }
297
+ gl.activeTexture(gl.TEXTURE0);
298
+ gl.bindTexture(gl.TEXTURE_2D, yTextureRef);
299
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, dWidth, dHeight, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, yData);
300
+ yData=null;
301
+ ySonData=null;
302
+
303
+ var cbDataLength = dWidth/2 * dHeight/2;
304
+ var cbData =new Uint8Array(cbDataLength);
305
+ //var cbSonData=new Uint8Array(dWidth/2) ;
306
+ for(var i=0;i<dHeight/2;i++)
307
+ {
308
+ var cbSonData = i420Data.subarray(width*height+i*width/2, width*height+i*width/2+dWidth/2);
309
+ for (var j = 0; j < dWidth/2; j++) {
310
+ cbData[i*dWidth/2 + j] = cbSonData[j];
311
+ }
312
+ }
313
+ gl.activeTexture(gl.TEXTURE2);
314
+ gl.bindTexture(gl.TEXTURE_2D, vTextureRef);
315
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, dWidth/2, dHeight/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, cbData);
316
+ cbData=null;
317
+ cbSonData=null;
318
+
319
+ var crDataLength = cbDataLength;
320
+ var crData = new Uint8Array(crDataLength);
321
+ for(var i=0;i<dHeight/2;i++)
322
+ {
323
+ var crSonData = i420Data.subarray(width*height*5/4+i*width/2, width*height*5/4+i*width/2+dWidth/2);
324
+ for (var j = 0; j < dWidth/2; j++) {
325
+ crData[i*dWidth/2 + j] = crSonData[j];
326
+ }
327
+ }
328
+ gl.activeTexture(gl.TEXTURE1);
329
+ gl.bindTexture(gl.TEXTURE_2D, uTextureRef);
330
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, dWidth/2, dHeight/2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, crData);
331
+ crData=null;
332
+ crSonData=null;
333
+ }
334
+
335
+ };
336
+
337
+ /**
338
+ * 设置显示区域
339
+ * @param stDisplayRect 显示区域
340
+ */
341
+ RenderManager.prototype.SR_SetDisplayRect = function(stDisplayRect) {
342
+
343
+ var gl = this.contextGL;
344
+
345
+ var nWindowWidth = this.nWindowWidth;
346
+ var nWindowHeight = this.nWindowHeight;
347
+
348
+ var texturePosValues = null;
349
+
350
+ if(stDisplayRect && nWindowWidth > 0 && nWindowHeight > 0) {
351
+ var fLeft = stDisplayRect.left / nWindowWidth;
352
+ var fTop = stDisplayRect.top / nWindowHeight;
353
+ var fRight = stDisplayRect.right / nWindowWidth;
354
+ var fBottom = stDisplayRect.bottom / nWindowHeight;
355
+
356
+ texturePosValues = new Float32Array([fRight, fTop, fLeft, fTop, fRight, fBottom, fLeft, fBottom]);
357
+ }
358
+ else {
359
+ texturePosValues = new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]);
360
+ }
361
+
362
+ var texturePosBuffer = this.texturePosBuffer;
363
+
364
+ gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);
365
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, texturePosValues);
366
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
367
+ };
368
+
369
+ /**
370
+ * 释放显示资源
371
+ */
372
+ RenderManager.prototype.SR_Destroy = function() {
373
+
374
+ var gl = this.contextGL;
375
+
376
+ var YUVProgram = this.YUVProgram;
377
+ gl.deleteProgram(YUVProgram);
378
+
379
+ var vertexPosBuffer = this.vertexPosBuffer;
380
+ var texturePosBuffer = this.texturePosBuffer;
381
+
382
+ gl.deleteBuffer(vertexPosBuffer);
383
+ gl.deleteBuffer(texturePosBuffer);
384
+
385
+ var yTextureRef = this.yTextureRef;
386
+ var uTextureRef = this.uTextureRef;
387
+ var vTextureRef = this.vTextureRef;
388
+ gl.deleteTexture(yTextureRef);
389
+ gl.deleteTexture(uTextureRef);
390
+ gl.deleteTexture(vTextureRef);
391
+ //gl.getExtension('WEBGL_lose_context').loseContext();
392
+ };
393
+
394
+ return RenderManager;
395
+
396
396
  }));