Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 2 of 2

Thread: Could not initialise shaders when adding texture

  1. #1
    Email address no longer exists Contributor
    Join Date
    Sep 2010
    Posts
    57

    Could not initialise shaders when adding texture

    Hi All,

    I want to map a texture to the sphere. However, I encounter a problem. The program only prompts "Could not initialise shaders".

    Is there any mistake I made in the program? Can anyone help me to check it? Thanks for your help.

    Code :
    <script id="shader-fs" type="x-shader/x-fragment"> 
      #ifdef GL_ES
      precision highp float;
      #endif
     
      varying vec4 vTransformedNormal;
      varying vec4 vPosition;
     
      uniform vec3 uAmbientColor;
     
      uniform vec3 uPointLightingLocation;
      uniform vec3 uPointLightingSpecularColor;
      uniform vec3 uPointLightingDiffuseColor;
     
      varying vec4 vColor;
      varying vec2 vTextureCoord;
      varying vec3 vLightWeighting;
     
      uniform sampler2D uSampler;
     
      void main(void) {
        vec3 lightWeighting;
        vec3 lightDirection = normalize(uPointLightingLocation - vPosition.xyz);
        vec3 normal = normalize(vTransformedNormal.xyz);
     
          float specularLightWeighting = 0.0;
          float shininess = 32.0;
          if (shininess < 255.0) {
            vec3 eyeDirection = normalize(-vPosition.xyz);
            vec3 reflectionDirection = reflect(-lightDirection, normal);
     
            specularLightWeighting = pow(max(dot(reflectionDirection, eyeDirection), 0.0), shininess);
          }
     
          float diffuseLightWeighting = max(dot(normal, lightDirection), 0.0);
          lightWeighting = uAmbientColor + uPointLightingSpecularColor * specularLightWeighting + uPointLightingDiffuseColor * diffuseLightWeighting;
     
        gl_FragColor = vec4(vColor.rgb * lightWeighting, vColor.a);
     
        vec4 textureColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
        gl_FragColor = vec4(textureColor.rgb * vLightWeighting, textureColor.a);
      }
    </script>
     
     <script id="shader-vs" type="x-shader/x-vertex"> 
      attribute vec3 aVertexPosition;
      attribute vec3 aVertexNormal;
      attribute vec4 aVertexColor;
      attribute vec2 aTextureCoord;
     
      uniform mat4 uMVMatrix;
      uniform mat4 uPMatrix;
      uniform mat4 uNMatrix;
     
      varying vec4 vColor;
      varying vec4 vTransformedNormal;
      varying vec4 vPosition;
      varying vec2 vTextureCoord;
     
      void main(void) {
        vPosition = uMVMatrix * vec4(aVertexPosition, 1.0);
        gl_Position = uPMatrix * vPosition;
        vColor = aVertexColor;
        vTextureCoord = aTextureCoord;
     
        vTransformedNormal = uNMatrix * vec4(aVertexNormal, 1.0);
      }
    </script>
     
    var shaderProgram;
    function initShaders() {
        var fragmentShader = getShader(gl, "shader-fs");
        var vertexShader = getShader(gl, "shader-vs");
     
        shaderProgram = gl.createProgram();
        gl.attachShader(shaderProgram, vertexShader);
        gl.attachShader(shaderProgram, fragmentShader);
        gl.linkProgram(shaderProgram);
     
        if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
            alert("Could not initialise shaders");
        }
     
    ...

  2. #2
    Advanced Member Frequent Contributor
    Join Date
    Apr 2010
    Posts
    894

    Re: Could not initialise shaders when adding texture

    The program only prompts "Could not initialise shaders".
    You can probably get more detailed information from your program if you improve the error checking:
    Try using glGetProgram(GL_INFO_LOG_LENGTH) to get the size of a character array to allocate and then pass it to glGetProgramInfoLog(). This usually contains useful error/warning messages from the shader compiler. You should add the same sort of error checking in the getShader() function, in case the compile stage (as opposed to the linking stage) already fails for your shaders.

    I've not attempted to find the error source by hand, sorry.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •