| 1104 | }; |
| 1105 | |
| 1106 | var createProgramObject = function(curContext, vetexShaderSource, fragmentShaderSource) { |
| 1107 | var vertexShaderObject = curContext.createShader(curContext.VERTEX_SHADER); |
| 1108 | curContext.shaderSource(vertexShaderObject, vetexShaderSource); |
| 1109 | curContext.compileShader(vertexShaderObject); |
| 1110 | if (!curContext.getShaderParameter(vertexShaderObject, curContext.COMPILE_STATUS)) { |
| 1111 | throw curContext.getShaderInfoLog(vertexShaderObject); |
| 1112 | } |
| 1113 | |
| 1114 | var fragmentShaderObject = curContext.createShader(curContext.FRAGMENT_SHADER); |
| 1115 | curContext.shaderSource(fragmentShaderObject, fragmentShaderSource); |
| 1116 | curContext.compileShader(fragmentShaderObject); |
| 1117 | if (!curContext.getShaderParameter(fragmentShaderObject, curContext.COMPILE_STATUS)) { |
| 1118 | throw curContext.getShaderInfoLog(fragmentShaderObject); |
| 1119 | } |
| 1120 | |
| 1121 | var programObject = curContext.createProgram(); |
| 1122 | curContext.attachShader(programObject, vertexShaderObject); |
| 1123 | curContext.attachShader(programObject, fragmentShaderObject); |
| 1124 | curContext.linkProgram(programObject); |
| 1125 | if (!curContext.getProgramParameter(programObject, curContext.LINK_STATUS)) { |
| 1126 | throw "Error linking shaders."; |
| 1127 | } |
| 1128 | |
| 1129 | return programObject; |
| 1130 | }; |
| 1131 | |
| 1132 | //////////////////////////////////////////////////////////////////////////// |
| 1133 | // Char handling |