comparison webGL/dandy/resources/makePanel.js~ @ 7:4343c1feedb5

upload boss.js xmlAlpha file
author NOBUYASU Oshiro
date Mon, 05 Jul 2010 17:19:51 +0900
parents 10344afb38a6
children 61febc94fa62
comparison
equal deleted inserted replaced
6:881478004f18 7:4343c1feedb5
31 return str.replace(/^\s+/g, "").replace(/\s+/g, " ").replace(/\s$/g, "").split(" "); 31 return str.replace(/^\s+/g, "").replace(/\s+/g, " ").replace(/\s$/g, "").split(" ");
32 } 32 }
33 33
34 function makeXmlObj(ctx, xmlObj) 34 function makeXmlObj(ctx, xmlObj)
35 { 35 {
36
37 var model = new Object();
38 model.x = parseFloat(xmlObj.model[0]);
39 model.y = parseFloat(xmlObj.model[1]);
40 model.z = parseFloat(xmlObj.model[2]);
41
36 var geometryData = [ ]; 42 var geometryData = [ ];
37 var normalData = [ ]; 43 var normalData = [ ];
38 var texCoordData = [ ]; 44 var texCoordData = [ ];
39 var indexData = [ ]; 45 var indexData = [ ];
40 var index = 0; 46 var index = 0;
41 for(var i=0; xmlObj.vertex[i]; i++){ 47 var xmax = 0;
42 geometryData.push(parseFloat(xmlObj.vertex[i])); 48 var xmin = 0;
49 var ymax = 0;
50 var ymin = 0;
51
52 for(var i=0; xmlObj.vertex[i]; i+=3){
53 geometryData.push(parseFloat(xmlObj.vertex[i]) - model.x);
54 geometryData.push(parseFloat(xmlObj.vertex[i+1]) - model.y);
55 geometryData.push(parseFloat(xmlObj.vertex[i+2]) - model.z);
43 if ( (i % 3) == 0) { 56 if ( (i % 3) == 0) {
44 indexData.push(index); 57 indexData.push(index);
45 index++; 58 index++;
46 } 59 }
60 //オブジェクトの横幅、縦幅を得るための動作
61 if ( i == 0) {
62 xmax = geometryData[0];
63 xmin = geometryData[0];
64 ymax = geometryData[1];
65 xmin = geometryData[1];
66 }
67 if ( i > 0 ){
68 xmax = Math.max( xmax, geometryData[i]);
69 xmin = Math.min( xmin, geometryData[i]);
70 ymax = Math.max( ymax, geometryData[i+1]);
71 ymin = Math.min( ymin, geometryData[i+1]);
72 }
47 } 73 }
48 for(i=0; xmlObj.texCoords[i]; i++){ 74 for(i=0; xmlObj.texCoords[i]; i++){
49 texCoordData.push(parseFloat(xmlObj.texCoords[i])); 75 texCoordData.push(parseFloat(xmlObj.texCoords[i]));
76
50 } 77 }
51 for(i=0; xmlObj.normal[i]; i++){ 78 for(i=0; xmlObj.normal[i]; i+=3){
52 normalData.push(parseFloat(xmlObj.normal[i])); 79 normalData.push(parseFloat(xmlObj.normal[i]) - model.x);
80 normalData.push(parseFloat(xmlObj.normal[i+1]) - model.y);
81 normalData.push(parseFloat(xmlObj.normal[i+2]) - model.z);
53 } 82 }
54 83
55 var retval = { }; 84 var retval = { };
56 85 retval.w = xmax - xmin;
86 retval.h = ymin - ymin;
87
57 retval.normalObject = ctx.createBuffer(); 88 retval.normalObject = ctx.createBuffer();
58 ctx.bindBuffer(ctx.ARRAY_BUFFER, retval.normalObject); 89 ctx.bindBuffer(ctx.ARRAY_BUFFER, retval.normalObject);
59 ctx.bufferData(ctx.ARRAY_BUFFER, new WebGLFloatArray(normalData), ctx.STATIC_DRAW); 90 ctx.bufferData(ctx.ARRAY_BUFFER, new WebGLFloatArray(normalData), ctx.STATIC_DRAW);
60 91
61 retval.texCoordObject = ctx.createBuffer(); 92 retval.texCoordObject = ctx.createBuffer();
72 ctx.bufferData(ctx.ELEMENT_ARRAY_BUFFER, new WebGLUnsignedShortArray(indexData), ctx.STREAM_DRAW); 103 ctx.bufferData(ctx.ELEMENT_ARRAY_BUFFER, new WebGLUnsignedShortArray(indexData), ctx.STREAM_DRAW);
73 104
74 return retval; 105 return retval;
75 } 106 }
76 107
108 function makeOrthoPara(left, right, bottom, top)
109 {
110 this.left = left;
111 this.right = right;
112 this.bottom = bottom;
113 this.top = top;
114 return this;
115 }