Mercurial > hg > Members > e105716
diff fps/resources/parse.js @ 0:fbb6f4f89f76
info3_1week
author | Syusaku Morita <e105716@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 27 Apr 2012 13:13:49 +0900 |
parents | |
children | 6b217e0f301c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fps/resources/parse.js Fri Apr 27 13:13:49 2012 +0900 @@ -0,0 +1,104 @@ + + + + +function loadObjXml(gl,url) +{ + if(gl.obj == undefined) gl.obj = new Object(); + var xmlChara = new Object(); + xmlChara = parseObj(url); + for (var name in xmlChara) + { + gl.obj[name] = makeXmlObj(gl, xmlChara[name]); + gl.obj[name].texture = loadImageTexture(gl, xmlChara[name].image); + } +} + +function PutSpriteF(ctx, x, y, scale, glObj) +{ + PutSpriteA(ctx,x,y,10, scale, 0, glObj); +} + + +function PutSpriteA(ctx, x, y, z, scale, angle, glObj) +{ + // setup VBOs + ctx.enableVertexAttribArray(0); + ctx.enableVertexAttribArray(1); + ctx.enableVertexAttribArray(2); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject); + ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0); + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject); + ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject); + ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject); + + // generate the model-view matrix + var mvMatrix = new J3DIMatrix4(); + mvMatrix.translate( x, y, z); + mvMatrix.scale(scale, scale, scale); + mvMatrix.rotate(angle, 0, 0, 1); + + // construct the normal matrix from the model-view matrix + var normalMatrix = new J3DIMatrix4(mvMatrix); + normalMatrix.invert(); + normalMatrix.transpose(); + normalMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false); + + // construct the model-view * projection matrix + var mvpMatrix = new J3DIMatrix4(ctx.perspectiveMatrix); + mvpMatrix.multiply(mvMatrix); + mvpMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false); + + + ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture); + ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0); + +} + + + +// matrix version +function PutSpriteV(ctx, x, y, z, scale, matrix, glObj) +{ + // setup VBOs + ctx.enableVertexAttribArray(0); + ctx.enableVertexAttribArray(1); + ctx.enableVertexAttribArray(2); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject); + ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0); + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject); + ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject); + ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0); + + ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject); + + // generate the model-view matrix + var mvMatrix = new J3DIMatrix4(); + mvMatrix.translate( x, y, z); + mvMatrix.scale(scale, scale, scale); + mvMatrix.multiply(matrix); + + // construct the normal matrix from the model-view matrix + var normalMatrix = new J3DIMatrix4(mvMatrix); + normalMatrix.invert(); + normalMatrix.transpose(); + normalMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false); + + // construct the model-view * projection matrix + var mvpMatrix = new J3DIMatrix4(ctx.perspectiveMatrix); + mvpMatrix.multiply(mvMatrix); + mvpMatrix.setUniform(ctx, ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false); + + + ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture); + ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0); + +} \ No newline at end of file