anchor.diff:      let mutable bgimageidx = int32(0)
       let mutable bgshader : Shader option = None
       let mutable bgtex : PathTexture option = None
  +    let mutable pyramidvert = int32(0)
  +    let mutable pyramididx = int32(0)
  +    let mutable pyramidshder : Shader option = None
       
   
       let checkGLError() =
  
positive.code:         else
              None
  
  
          
  
  let compileShader( code, stype ) =
  
negative.code:     \tfragData = texdata.xyzw;\n\
      }\n"
  
  let pyramid_vert =
      "#version 130\n\
      in vec3 vpos;\n\
      uniform mat4 mvp;\n\
      uniform mat4 mv;\n\
      out vec3 worldpos;\n\
      void main()\n\
      {\n\
      \tgl_Position = mvp * vec4(vpos, 1.0);\n\
      \tworldpos = (mv * vec4(vpos, 1.0)).xyz;\n\
      }\n"
  
      (*Use a normal derived from the world position in order to highlight faces*)
  let pyramid_frag =
      "#version 130\n\
      out vec4 fragData;\n\
      in vec3 worldpos;\n\
      void main()\n\
      {\n\
      \tvec3 X = dFdx(worldpos);\n\
      \tvec3 Y = dFdy(worldpos);\n\
      \tvec3 normal = normalize(cross(X,Y));\n\
      \tfloat colorMult = abs(dot(normal, normalize(vec3(0,1,-1))));\n\
      \tfragData = vec4( 1.0 * colorMult, 0.0, 0.0, .5 );\n\
      }\n"
  
  (*Uniforms have a location*)
  type UniformData =
      struct
  