public Shader(String name)
  {
    this.shader = ARBShaderObjects.glCreateProgramObjectARB();
    if (this.shader != 0) {
      this.vertShader = createVertShader("/shader/" + name + ".vert.txt");
      this.fragShader = createFragShader("/shader/" + name + ".frag.txt");
    } else {
      this.useShader = false;
    }

    if ((this.vertShader != 0) && (this.fragShader != 0)) {
      ARBShaderObjects.glAttachObjectARB(this.shader, this.vertShader);
      ARBShaderObjects.glAttachObjectARB(this.shader, this.fragShader);

      ARBShaderObjects.glLinkProgramARB(this.shader);
      if (ARBShaderObjects.glGetObjectParameteriARB(this.shader, 35714) == 0) {
        printLogInfo(this.shader);
        this.useShader = false;
      }
      ARBShaderObjects.glValidateProgramARB(this.shader);
      if (ARBShaderObjects.glGetObjectParameteriARB(this.shader, 35715) == 0) {
        printLogInfo(this.shader);
        this.useShader = false;
      }
    } else {
      this.useShader = false;
    }
  }