@@ -135,7 +135,7 @@ var imgui_ws = {
135
135
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, width, height, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, pixels);
136
136
},
137
137
138
- render: function(draw_data_abuf ) {
138
+ render: function(n_cmd_lists, draw_lists_abuf ) {
139
139
// Backup GL state
140
140
const last_active_texture = this.gl.getParameter(this.gl.ACTIVE_TEXTURE) || null;
141
141
const last_program = this.gl.getParameter(this.gl.CURRENT_PROGRAM) || null;
@@ -155,12 +155,6 @@ var imgui_ws = {
155
155
const last_enable_depth_test = this.gl.getParameter(this.gl.DEPTH_TEST) || null;
156
156
const last_enable_scissor_test = this.gl.getParameter(this.gl.SCISSOR_TEST) || null;
157
157
158
- var draw_data_offset = 0;
159
- var draw_data_uint8 = new Uint8Array(draw_data_abuf);
160
- var draw_data_uint16 = new Uint16Array(draw_data_abuf);
161
- var draw_data_uint32 = new Uint32Array(draw_data_abuf);
162
- var draw_data_float = new Float32Array(draw_data_abuf);
163
-
164
158
this.gl.enable(this.gl.BLEND);
165
159
this.gl.blendEquation(this.gl.FUNC_ADD);
166
160
this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
@@ -196,17 +190,17 @@ var imgui_ws = {
196
190
this.gl.vertexAttribPointer(this.attribute_location_uv, 2, this.gl.FLOAT, false, 5*4, 2*4);
197
191
this.gl.vertexAttribPointer(this.attribute_location_color, 4, this.gl.UNSIGNED_BYTE, true, 5*4, 4*4);
198
192
199
- var p = null;
200
- var n_cmd_lists = draw_data_uint32[draw_data_offset]; draw_data_offset += 4;
201
193
for (var i_list = 0; i_list < n_cmd_lists; ++i_list) {
202
- p = new Float32Array(draw_data_abuf, draw_data_offset, 2);
194
+ var draw_data_offset = 0;
195
+
196
+ var p = new Float32Array(draw_lists_abuf[i_list], draw_data_offset, 2);
203
197
var offset_x = p[0]; draw_data_offset += 4;
204
198
var offset_y = p[1]; draw_data_offset += 4;
205
199
206
- p = new Uint32Array(draw_data_abuf , draw_data_offset, 1);
200
+ p = new Uint32Array(draw_lists_abuf[i_list] , draw_data_offset, 1);
207
201
var n_vertices = p[0]; draw_data_offset += 4;
208
202
209
- var av = new Float32Array(draw_data_abuf , draw_data_offset, 5*n_vertices);
203
+ var av = new Float32Array(draw_lists_abuf[i_list] , draw_data_offset, 5*n_vertices);
210
204
211
205
for (var k = 0; k < n_vertices; ++k) {
212
206
av[5*k + 0] += offset_x;
@@ -223,25 +217,25 @@ var imgui_ws = {
223
217
224
218
draw_data_offset += 5*4*n_vertices;
225
219
226
- p = new Uint32Array(draw_data_abuf , draw_data_offset, 1);
220
+ p = new Uint32Array(draw_lists_abuf[i_list] , draw_data_offset, 1);
227
221
var n_indices = p[0]; draw_data_offset += 4;
228
222
229
- var ai = new Uint16Array(draw_data_abuf , draw_data_offset, n_indices);
223
+ var ai = new Uint16Array(draw_lists_abuf[i_list] , draw_data_offset, n_indices);
230
224
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.index_buffer);
231
225
this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, ai, this.gl.STREAM_DRAW);
232
226
draw_data_offset += 2*n_indices;
233
227
234
- p = new Uint32Array(draw_data_abuf , draw_data_offset, 1);
228
+ p = new Uint32Array(draw_lists_abuf[i_list] , draw_data_offset, 1);
235
229
var n_cmd = p[0]; draw_data_offset += 4;
236
230
237
231
for (var i_cmd = 0; i_cmd < n_cmd; ++i_cmd) {
238
- var pi = new Uint32Array(draw_data_abuf , draw_data_offset, 4);
232
+ var pi = new Uint32Array(draw_lists_abuf[i_list] , draw_data_offset, 4);
239
233
var n_elements = pi[0]; draw_data_offset += 4;
240
234
var texture_id = pi[1]; draw_data_offset += 4;
241
235
var offset_vtx = pi[2]; draw_data_offset += 4;
242
236
var offset_idx = pi[3]; draw_data_offset += 4;
243
237
244
- var pf = new Float32Array(draw_data_abuf , draw_data_offset, 4);
238
+ var pf = new Float32Array(draw_lists_abuf[i_list] , draw_data_offset, 4);
245
239
var clip_x = pf[0] - clip_off_x; draw_data_offset += 4;
246
240
var clip_y = pf[1] - clip_off_y; draw_data_offset += 4;
247
241
var clip_z = pf[2] - clip_off_x; draw_data_offset += 4;
0 commit comments