2012-11-13 3 views
3

여기에서 누락 된 내용을 찾을 수 없습니다. 왜이 오류가 발생합니까? Uncaught ReferenceError : createShaderFromScriptElement가 정의되지 않았습니다.Webgl Uncaught ReferenceError : createShaderFromScriptElement가 정의되지 않았습니다.

이 튜토리얼은 일반적인 튜토리얼에서 가져 와서 붙여 넣었습니다. 브라우저 : 파이어 폭스와 크롬 -> 두 브라우저

<!DOCTYPE HTML> 
<html lang="en"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Zooming via HTML5 Canvas Context</title> 
    </head> 
    <body> 

     <canvas id="canvas" width="200" height="200"></canvas> 

     <script id="2d-vertex-shader" type="x-shader/x-vertex"> 
      attribute vec2 a_position; 

      void main() { 
      gl_Position = vec4(a_position, 0, 1); 
      } 
     </script> 

     <script id="2d-fragment-shader" type="x-shader/x-fragment"> 
      void main() { 
      gl_FragColor = vec4(0,1,0,1); // green 
      } 
     </script> 

     <script> 
      window.onload = function() { 
       // Get A WebGL context 
       var canvas = document.getElementById("canvas"); 
       var gl = canvas.getContext("experimental-webgl"); 

       // setup a GLSL program 

       var vertexShader = createShaderFromScriptElement(gl, "2d-vertex-shader"); 
       var fragmentShader = createShaderFromScriptElement(gl, "2d-fragment-shader"); 
       var program = createProgram(gl, [vertexShader, fragmentShader]); 
       gl.useProgram(program); 

       // look up where the vertex data needs to go. 
       var positionLocation = gl.getAttribLocation(program, "a_position"); 

       // Create a buffer and put a single clipspace rectangle in 
       // it (2 triangles) 
       var buffer = gl.createBuffer(); 
       gl.bindBuffer(gl.ARRAY_BUFFER, buffer); 
       gl.bufferData(
         gl.ARRAY_BUFFER, 
         new Float32Array([ 
          -1.0, -1.0, 
          1.0, -1.0, 
          -1.0, 1.0, 
          -1.0, 1.0, 
          1.0, -1.0, 
          1.0, 1.0]), 
         gl.STATIC_DRAW); 
       gl.enableVertexAttribArray(positionLocation); 
       gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0); 

       // draw 
       gl.drawArrays(gl.TRIANGLES, 0, 6); 
      } 

     </script> 


    </body> 
</html> 

답변

8

createShaderFromScript는 외부 스크립트의 일부에서 같은 오류가 아니라 뭔가에 내장 WebGL이 유틸 파일을 포함 무엇 이건 데모 당신은 아마보고 있었다

. 이러한 일이 같은 :

createShaderFromScript 정의

http://greggman.github.com/webgl-fundamentals/webgl/resources/webgl-utils.js

.

+0

대단히 고맙습니다. 나는 무엇인가 놓쳤다는 것을 알았습니다! – kaljak

관련 문제