Skip to content

Commit 4c4dc5f

Browse files
committed
Merge pull request tparisi#4 from greggman/no-gl-properties
Stop putting properties on WebGLObjects
2 parents 3e0e071 + 74cf187 commit 4c4dc5f

File tree

22 files changed

+814
-814
lines changed

22 files changed

+814
-814
lines changed

example01/index.html

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -115,18 +115,18 @@
115115

116116
var shader;
117117
if (shaderScript.type == "x-shader/x-fragment") {
118-
shader = gl.createShader(gl.FRAGMENT_SHADER);
118+
shader = { id: gl.createShader(gl.FRAGMENT_SHADER) };
119119
} else if (shaderScript.type == "x-shader/x-vertex") {
120-
shader = gl.createShader(gl.VERTEX_SHADER);
120+
shader = { id: gl.createShader(gl.VERTEX_SHADER) };
121121
} else {
122122
return null;
123123
}
124124

125-
gl.shaderSource(shader, str);
126-
gl.compileShader(shader);
125+
gl.shaderSource(shader.id, str);
126+
gl.compileShader(shader.id);
127127

128-
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
129-
alert(gl.getShaderInfoLog(shader));
128+
if (!gl.getShaderParameter(shader.id, gl.COMPILE_STATUS)) {
129+
alert(gl.getShaderInfoLog(shader.id));
130130
return null;
131131
}
132132

@@ -141,21 +141,21 @@
141141
var fragmentShader = getShader(gl, "shader-fs");
142142
var vertexShader = getShader(gl, "shader-vs");
143143

144-
shaderProgram = gl.createProgram();
145-
gl.attachShader(shaderProgram, vertexShader);
146-
gl.attachShader(shaderProgram, fragmentShader);
147-
gl.linkProgram(shaderProgram);
144+
shaderProgram = { id: gl.createProgram() };
145+
gl.attachShader(shaderProgram.id, vertexShader.id);
146+
gl.attachShader(shaderProgram.id, fragmentShader.id);
147+
gl.linkProgram(shaderProgram.id);
148148

149-
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
149+
if (!gl.getProgramParameter(shaderProgram.id, gl.LINK_STATUS)) {
150150
alert("Could not initialise shaders");
151151
}
152152

153-
gl.useProgram(shaderProgram);
153+
gl.useProgram(shaderProgram.id);
154154

155-
aVertexPosition = gl.getAttribLocation(shaderProgram, "aVertexPosition");
155+
aVertexPosition = gl.getAttribLocation(shaderProgram.id, "aVertexPosition");
156156
gl.enableVertexAttribArray(aVertexPosition);
157157

158-
aPlotPosition = gl.getAttribLocation(shaderProgram, "aPlotPosition");
158+
aPlotPosition = gl.getAttribLocation(shaderProgram.id, "aPlotPosition");
159159
gl.enableVertexAttribArray(aPlotPosition);
160160
}
161161

@@ -169,8 +169,8 @@
169169

170170
var vertexPositionBuffer;
171171
function initBuffers() {
172-
vertexPositionBuffer = gl.createBuffer();
173-
gl.bindBuffer(gl.ARRAY_BUFFER, vertexPositionBuffer);
172+
vertexPositionBuffer = { id: gl.createBuffer() };
173+
gl.bindBuffer(gl.ARRAY_BUFFER, vertexPositionBuffer.id);
174174
var vertices = [
175175
1.0, 1.0,
176176
-1.0, 1.0,
@@ -194,12 +194,12 @@
194194
gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
195195
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
196196

197-
gl.bindBuffer(gl.ARRAY_BUFFER, vertexPositionBuffer);
197+
gl.bindBuffer(gl.ARRAY_BUFFER, vertexPositionBuffer.id);
198198
gl.vertexAttribPointer(aVertexPosition, vertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
199199

200200

201-
var plotPositionBuffer = gl.createBuffer();
202-
gl.bindBuffer(gl.ARRAY_BUFFER, plotPositionBuffer);
201+
var plotPositionBuffer = { id: gl.createBuffer() };
202+
gl.bindBuffer(gl.ARRAY_BUFFER, plotPositionBuffer.id);
203203
var cornerIx;
204204
corners = [];
205205
for (cornerIx in baseCorners) {

example02/index.html

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -153,18 +153,18 @@
153153

154154
var shader;
155155
if (shaderScript.type == "x-shader/x-fragment") {
156-
shader = gl.createShader(gl.FRAGMENT_SHADER);
156+
shader = { id: gl.createShader(gl.FRAGMENT_SHADER) };
157157
} else if (shaderScript.type == "x-shader/x-vertex") {
158-
shader = gl.createShader(gl.VERTEX_SHADER);
158+
shader = { id: gl.createShader(gl.VERTEX_SHADER) };
159159
} else {
160160
return null;
161161
}
162162

163-
gl.shaderSource(shader, str);
164-
gl.compileShader(shader);
163+
gl.shaderSource(shader.id, str);
164+
gl.compileShader(shader.id);
165165

166-
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
167-
alert(gl.getShaderInfoLog(shader));
166+
if (!gl.getShaderParameter(shader.id, gl.COMPILE_STATUS)) {
167+
alert(gl.getShaderInfoLog(shader.id));
168168
return null;
169169
}
170170

@@ -176,20 +176,20 @@
176176
var fragmentShader = getShader(gl, fragmentShaderName);
177177
var vertexShader = getShader(gl, vertexShaderName);
178178

179-
var program = gl.createProgram();
180-
gl.attachShader(program, vertexShader);
181-
gl.attachShader(program, fragmentShader);
182-
gl.linkProgram(program);
179+
var program = { id: gl.createProgram() };
180+
gl.attachShader(program.id, vertexShader.id);
181+
gl.attachShader(program.id, fragmentShader.id);
182+
gl.linkProgram(program.id);
183183

184-
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
184+
if (!gl.getProgramParameter(program.id, gl.LINK_STATUS)) {
185185
alert("Could not initialise color shaders");
186186
}
187187

188-
program.vertexPositionAttribute = gl.getAttribLocation(program, "aVertexPosition");
188+
program.vertexPositionAttribute = gl.getAttribLocation(program.id, "aVertexPosition");
189189
gl.enableVertexAttribArray(program.vertexPositionAttribute);
190190

191-
program.pMatrixUniform = gl.getUniformLocation(program, "uPMatrix");
192-
program.mvMatrixUniform = gl.getUniformLocation(program, "uMVMatrix");
191+
program.pMatrixUniform = gl.getUniformLocation(program.id, "uPMatrix");
192+
program.mvMatrixUniform = gl.getUniformLocation(program.id, "uMVMatrix");
193193

194194
return program;
195195
}
@@ -199,19 +199,19 @@
199199
var mandelbrotProgram;
200200
function initPrograms() {
201201
colorProgram = initProgram("color-shader-fs", "color-shader-vs");
202-
colorProgram.vertexColorAttribute = gl.getAttribLocation(colorProgram, "aColor");
202+
colorProgram.vertexColorAttribute = gl.getAttribLocation(colorProgram.id, "aColor");
203203
gl.enableVertexAttribArray(colorProgram.vertexColorAttribute);
204204

205205
mandelbrotProgram = initProgram("mandelbrot-shader-fs", "mandelbrot-shader-vs");
206-
mandelbrotProgram.vertexPlotPositionAttribute = gl.getAttribLocation(mandelbrotProgram, "aPlotPosition");
206+
mandelbrotProgram.vertexPlotPositionAttribute = gl.getAttribLocation(mandelbrotProgram.id, "aPlotPosition");
207207
gl.enableVertexAttribArray(mandelbrotProgram.vertexPlotPositionAttribute);
208208
}
209209

210210

211211
var currentProgram;
212212
function setCurrentProgram(program) {
213213
currentProgram = program;
214-
gl.useProgram(program);
214+
gl.useProgram(program.id);
215215
}
216216

217217

@@ -321,11 +321,11 @@
321321
mat4.rotate(mvMatrix, degToRad(this.yRot), [0, 1, 0]);
322322
mat4.rotate(mvMatrix, degToRad(this.zRot), [0, 0, 1]);
323323

324-
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
324+
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer.id);
325325
gl.vertexAttribPointer(mandelbrotProgram.vertexPositionAttribute, cubeVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
326326

327-
var positionBuffer = gl.createBuffer();
328-
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
327+
var positionBuffer = { id: gl.createBuffer() };
328+
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer.id);
329329
var positions = [];
330330
for (var i = 0; i < 6; i++) {
331331
positions.push(-2.2 / this.zooms[i] + this.centerOffsetsX[i], -1.2 / this.zooms[i] + this.centerOffsetsY[i]);;
@@ -336,7 +336,7 @@
336336
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);
337337
gl.vertexAttribPointer(mandelbrotProgram.vertexPlotPositionAttribute, 2, gl.FLOAT, false, 0, 0);
338338

339-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
339+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer.id);
340340
setMatrixUniforms();
341341
gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer.numItems, gl.UNSIGNED_SHORT, 0);
342342

@@ -350,8 +350,8 @@
350350
var cubeVertexPositionBuffer;
351351
var cubeVertexIndexBuffer;
352352
function initBuffers() {
353-
boundingBoxVertexPositionBuffer = gl.createBuffer();
354-
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexPositionBuffer);
353+
boundingBoxVertexPositionBuffer = { id: gl.createBuffer() };
354+
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexPositionBuffer.id);
355355
var vertices = [
356356
-5, -5, -10,
357357
-5, -5, -25,
@@ -382,8 +382,8 @@
382382
boundingBoxVertexPositionBuffer.itemSize = 3;
383383
boundingBoxVertexPositionBuffer.numItems = 20;
384384

385-
boundingBoxVertexColorBuffer = gl.createBuffer();
386-
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexColorBuffer);
385+
boundingBoxVertexColorBuffer = { id: gl.createBuffer() };
386+
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexColorBuffer.id);
387387
var colors = [
388388
0.9, 0.9, 0.9, 1,
389389
0.9, 0.9, 0.9, 1,
@@ -414,8 +414,8 @@
414414
boundingBoxVertexColorBuffer.itemSize = 4;
415415
boundingBoxVertexColorBuffer.numItems = 20;
416416

417-
boundingBoxVertexIndexBuffer = gl.createBuffer();
418-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, boundingBoxVertexIndexBuffer);
417+
boundingBoxVertexIndexBuffer = { id: gl.createBuffer() };
418+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, boundingBoxVertexIndexBuffer.id);
419419
var vertexIndices = [
420420
0, 1, 2, 0, 2, 3,
421421
4, 5, 6, 4, 6, 7,
@@ -427,8 +427,8 @@
427427
boundingBoxVertexIndexBuffer.itemSize = 1;
428428
boundingBoxVertexIndexBuffer.numItems = 30;
429429

430-
cubeVertexPositionBuffer = gl.createBuffer();
431-
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
430+
cubeVertexPositionBuffer = { id: gl.createBuffer() };
431+
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer.id);
432432
var vertexPositions = [
433433
// Front face
434434
-1.0, -1.0, 1.0,
@@ -470,8 +470,8 @@
470470
cubeVertexPositionBuffer.itemSize = 3;
471471
cubeVertexPositionBuffer.numItems = 24;
472472

473-
cubeVertexIndexBuffer = gl.createBuffer();
474-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
473+
cubeVertexIndexBuffer = { id: gl.createBuffer() };
474+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer.id);
475475
var vertexIndices = [
476476
0, 1, 2, 0, 2, 3, // Front face
477477
4, 5, 6, 4, 6, 7, // Back face
@@ -499,13 +499,13 @@
499499
setCurrentProgram(colorProgram);
500500
mat4.identity(mvMatrix);
501501

502-
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexPositionBuffer);
502+
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexPositionBuffer.id);
503503
gl.vertexAttribPointer(colorProgram.vertexPositionAttribute, boundingBoxVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
504504

505-
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexColorBuffer);
505+
gl.bindBuffer(gl.ARRAY_BUFFER, boundingBoxVertexColorBuffer.id);
506506
gl.vertexAttribPointer(colorProgram.vertexColorAttribute, boundingBoxVertexColorBuffer.itemSize, gl.FLOAT, false, 0, 0);
507507

508-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, boundingBoxVertexIndexBuffer);
508+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, boundingBoxVertexIndexBuffer.id);
509509
setMatrixUniforms();
510510
gl.drawElements(gl.TRIANGLES, boundingBoxVertexIndexBuffer.numItems, gl.UNSIGNED_SHORT, 0);
511511
}

example03/particles-01-noenable.html

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,18 @@
8383

8484
var shader;
8585
if (shaderScript.type == "x-shader/x-fragment") {
86-
shader = gl.createShader(gl.FRAGMENT_SHADER);
86+
shader = { id: gl.createShader(gl.FRAGMENT_SHADER) };
8787
} else if (shaderScript.type == "x-shader/x-vertex") {
88-
shader = gl.createShader(gl.VERTEX_SHADER);
88+
shader = { id: gl.createShader(gl.VERTEX_SHADER) };
8989
} else {
9090
return null;
9191
}
9292

93-
gl.shaderSource(shader, str);
94-
gl.compileShader(shader);
93+
gl.shaderSource(shader.id, str);
94+
gl.compileShader(shader.id);
9595

96-
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
97-
alert(gl.getShaderInfoLog(shader));
96+
if (!gl.getShaderParameter(shader.id, gl.COMPILE_STATUS)) {
97+
alert(gl.getShaderInfoLog(shader.id));
9898
return null;
9999
}
100100

@@ -107,36 +107,36 @@
107107
var fragmentShader = getShader(gl, "shader-fs");
108108
var vertexShader = getShader(gl, "shader-vs");
109109

110-
shaderProgram = gl.createProgram();
111-
gl.attachShader(shaderProgram, vertexShader);
112-
gl.attachShader(shaderProgram, fragmentShader);
113-
gl.linkProgram(shaderProgram);
110+
shaderProgram = { id: gl.createProgram() };
111+
gl.attachShader(shaderProgram.id, vertexShader.id);
112+
gl.attachShader(shaderProgram.id, fragmentShader.id);
113+
gl.linkProgram(shaderProgram.id);
114114

115-
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
115+
if (!gl.getProgramParameter(shaderProgram.id, gl.LINK_STATUS)) {
116116
alert("Could not initialise shaders");
117117
}
118118

119-
gl.useProgram(shaderProgram);
119+
gl.useProgram(shaderProgram.id);
120120

121-
shaderProgram.pointLifetimeAttribute = gl.getAttribLocation(shaderProgram, "aLifetime");
121+
shaderProgram.pointLifetimeAttribute = gl.getAttribLocation(shaderProgram.id, "aLifetime");
122122
gl.enableVertexAttribArray(shaderProgram.pointLifetimeAttribute);
123123

124-
shaderProgram.pointStartPositionAttribute = gl.getAttribLocation(shaderProgram, "aStartPosition");
124+
shaderProgram.pointStartPositionAttribute = gl.getAttribLocation(shaderProgram.id, "aStartPosition");
125125
gl.enableVertexAttribArray(shaderProgram.pointStartPositionAttribute);
126126

127-
shaderProgram.pointEndPositionAttribute = gl.getAttribLocation(shaderProgram, "aEndPosition");
127+
shaderProgram.pointEndPositionAttribute = gl.getAttribLocation(shaderProgram.id, "aEndPosition");
128128
gl.enableVertexAttribArray(shaderProgram.pointEndPositionAttribute);
129129

130-
shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "sTexture");
131-
shaderProgram.centerPositionUniform = gl.getUniformLocation(shaderProgram, "uCenterPosition");
132-
shaderProgram.colorUniform = gl.getUniformLocation(shaderProgram, "uColor");
133-
shaderProgram.timeUniform = gl.getUniformLocation(shaderProgram, "uTime");
130+
shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram.id, "sTexture");
131+
shaderProgram.centerPositionUniform = gl.getUniformLocation(shaderProgram.id, "uCenterPosition");
132+
shaderProgram.colorUniform = gl.getUniformLocation(shaderProgram.id, "uColor");
133+
shaderProgram.timeUniform = gl.getUniformLocation(shaderProgram.id, "uTime");
134134
}
135135

136136

137137
function handleLoadedTexture(texture) {
138138
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
139-
gl.bindTexture(gl.TEXTURE_2D, texture);
139+
gl.bindTexture(gl.TEXTURE_2D, texture.id);
140140
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image);
141141
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
142142
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
@@ -149,7 +149,7 @@
149149

150150
var texture;
151151
function initTexture() {
152-
texture = gl.createTexture();
152+
texture = { id: gl.createTexture() };
153153
texture.image = new Image();
154154
texture.image.onload = function() {
155155
handleLoadedTexture(texture)
@@ -180,20 +180,20 @@
180180
endPositions.push((Math.random() * 2) - 1);
181181
}
182182

183-
pointLifetimesBuffer = gl.createBuffer();
184-
gl.bindBuffer(gl.ARRAY_BUFFER, pointLifetimesBuffer);
183+
pointLifetimesBuffer = { id: gl.createBuffer() };
184+
gl.bindBuffer(gl.ARRAY_BUFFER, pointLifetimesBuffer.id);
185185
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(lifetimes), gl.STATIC_DRAW);
186186
pointLifetimesBuffer.itemSize = 1;
187187
pointLifetimesBuffer.numItems = numParticles;
188188

189-
pointStartPositionsBuffer = gl.createBuffer();
190-
gl.bindBuffer(gl.ARRAY_BUFFER, pointStartPositionsBuffer);
189+
pointStartPositionsBuffer = { id: gl.createBuffer() };
190+
gl.bindBuffer(gl.ARRAY_BUFFER, pointStartPositionsBuffer.id);
191191
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(startPositions), gl.STATIC_DRAW);
192192
pointStartPositionsBuffer.itemSize = 3;
193193
pointStartPositionsBuffer.numItems = numParticles;
194194

195-
pointEndPositionsBuffer = gl.createBuffer();
196-
gl.bindBuffer(gl.ARRAY_BUFFER, pointEndPositionsBuffer);
195+
pointEndPositionsBuffer = { id: gl.createBuffer() };
196+
gl.bindBuffer(gl.ARRAY_BUFFER, pointEndPositionsBuffer.id);
197197
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(endPositions), gl.STATIC_DRAW);
198198
pointEndPositionsBuffer.itemSize = 3;
199199
pointEndPositionsBuffer.numItems = numParticles;
@@ -208,20 +208,20 @@
208208

209209
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
210210

211-
gl.bindBuffer(gl.ARRAY_BUFFER, pointLifetimesBuffer);
211+
gl.bindBuffer(gl.ARRAY_BUFFER, pointLifetimesBuffer.id);
212212
gl.vertexAttribPointer(shaderProgram.pointLifetimeAttribute, pointLifetimesBuffer.itemSize, gl.FLOAT, false, 0, 0);
213213

214-
gl.bindBuffer(gl.ARRAY_BUFFER, pointStartPositionsBuffer);
214+
gl.bindBuffer(gl.ARRAY_BUFFER, pointStartPositionsBuffer.id);
215215
gl.vertexAttribPointer(shaderProgram.pointStartPositionAttribute, pointStartPositionsBuffer.itemSize, gl.FLOAT, false, 0, 0);
216216

217-
gl.bindBuffer(gl.ARRAY_BUFFER, pointEndPositionsBuffer);
217+
gl.bindBuffer(gl.ARRAY_BUFFER, pointEndPositionsBuffer.id);
218218
gl.vertexAttribPointer(shaderProgram.pointEndPositionAttribute, pointEndPositionsBuffer.itemSize, gl.FLOAT, false, 0, 0);
219219

220220
gl.enable(gl.BLEND);
221221
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
222222

223223
gl.activeTexture(gl.TEXTURE0);
224-
gl.bindTexture(gl.TEXTURE_2D, texture);
224+
gl.bindTexture(gl.TEXTURE_2D, texture.id);
225225
gl.uniform1i(shaderProgram.samplerUniform, 0);
226226

227227
gl.uniform3f(shaderProgram.centerPositionUniform, centerPos[0], centerPos[1], centerPos[2]);

0 commit comments

Comments
 (0)