glew and Geforce8800GTS

My display card is 8800GTS,why not supported GL_EXT_texture_array and GL_NV_gpu_program4,and when i used glEnable(GL_TEXTURE_2D_ARRAY_EXT),it return invalid enum
thanks!

Did you installed proper Nvidia forceware drivers ?
Did you installed properly glew ?

Yes,I installed the newest forceware driver and glew 1.4(the newest too)

but when i used some geometry shader,it can run as good state.
this`s my program code,compiled and linked successful and can run at some time.

#include<stdlib.h>
#include<stdio.h>
#include<assert.h>
#ifdef __APPLE__
#include<GLEW/glew.h>
#include<GLUT/glut.h>
#else
#include<GL/glew.h>
#include<GL/glut.h>
#endif
#include<IL/il.h>
#include<UDH/asmshader.h>
#include<UDH/shaderPath.h>
#include<UDH/layertex.h>
#include<UDH/GLvector.h>
#include<UDH/checkfbo.h>
#include<UDH/redef.h>

#pragma comment(lib,"glew32.lib")
#pragma comment(lib,"DevIL.lib")
#pragma comment(lib,"GLvector.lib")

static layerTexture* layerNode;
const char* srcVP=ASM_PROC_PATH_VP"layerRender.vp";
const char* srcGP=ASM_PROC_PATH_GP"layerRender.gp";
const char* srcFP=ASM_PROC_PATH_FP"layerRender.fp";
/*const GLfloat4 colorArray[4][8]={
	GLfloat4(0.15,0.55,0.80,1.00),\
	GLfloat4(0.15,0.55,0.80,1.00),\
	GLfloat4(0.15,0.55,0.80,1.00),\
	GLfloat4(0.15,0.55,0.80,1.00),\
    GLfloat4(0.25,0.65,0.70,1.00),\
    GLfloat4(0.25,0.65,0.70,1.00),\
    GLfloat4(0.25,0.65,0.70,1.00),\
    GLfloat4(0.25,0.65,0.70,1.00),\
    GLfloat4(0.35,0.75,0.60,1.00),\
    GLfloat4(0.35,0.75,0.60,1.00),\
    GLfloat4(0.35,0.75,0.60,1.00),\
    GLfloat4(0.35,0.75,0.60,1.00),\
    GLfloat4(0.45,0.85,0.50,1.00),\
    GLfloat4(0.45,0.85,0.50,1.00),\
    GLfloat4(0.45,0.85,0.50,1.00),\
    GLfloat4(0.45,0.85,0.50,1.00),\
    GLfloat4(0.55,0.75,0.40,1.00),\
    GLfloat4(0.55,0.75,0.40,1.00),\
    GLfloat4(0.55,0.75,0.40,1.00),\
    GLfloat4(0.55,0.75,0.40,1.00),\
    GLfloat4(0.65,0.65,0.30,1.00),\
    GLfloat4(0.65,0.65,0.30,1.00),\
    GLfloat4(0.65,0.65,0.30,1.00),\
    GLfloat4(0.65,0.65,0.30,1.00),\
    GLfloat4(0.75,0.55,0.20,1.00),\
    GLfloat4(0.75,0.55,0.20,1.00),\
    GLfloat4(0.75,0.55,0.20,1.00),\
    GLfloat4(0.75,0.55,0.20,1.00),\
    GLfloat4(0.85,0.45,0.10,1.00),\
    GLfloat4(0.85,0.45,0.10,1.00),\
    GLfloat4(0.85,0.45,0.10,1.00),\
    GLfloat4(0.85,0.45,0.10,1.00)\
};*/
const char* image[]={"C:\\BMP/g0.bmp","C:\\BMP/g1.bmp","C:\\BMP/g2.bmp","C:\\BMP/g3.bmp",
                      "C:\\BMP/g4.bmp","C:\\BMP/g5.bmp","C:\\BMP/g6.bmp","C:\\BMP/g7.bmp"};
//const float ox[8]={0.0,32.0,64.0,96.0,128.0,160.0,192.0,224.0};
//const float oy[8]={0.0,32.0,64.0,96.0,128.0,160.0,192.0,224.0};
const float ox[8]={0.0,0.125,0.25,0.375,0.5,0.625,0.75.0,0.875};
const float oy[8]={0.0,0.125,0.25,0.375,0.5,0.625,0.75.0,0.875};
static GLuint VP;
static GLuint GP;
static GLuint FP;
static GLuint texId[8];

void bindShaderProcessor()
{
    VP=loadASMShader(GL_VERTEX_PROGRAM  ,srcVP);
    GP=loadASMShader(GL_GEOMETRY_PROGRAM,srcGP);
    FP=loadASMShader(GL_FRAGMENT_PROGRAM,srcFP); 
}

void initFBO()
{
    layerNode=layerNode->creator();
    layerNode->shape.id=0;
    layerNode->shape.dim=8;
    layerNode->shape.lenS=256;
    layerNode->shape.lenT=256;
    layerNode->shape.level=0;
    layerNode->shape.border=0;
    layerNode->shape.internalFormat=GL_RGBA32F_ARB;
    layerNode->shape.format=GL_RGBA;
    layerNode->shape.type=GL_FLOAT;
    layerNode->buildor();
	printf("[arrayTex].id:%d
",layerNode->shape.id);
    layerNode->bind();
	CHECK_FRAMEBUFFER_STATUS();
    glEnable(GL_DEPTH_TEST);
}

void initSrcTex()
{
	ilInit();
	ILuint ilh[8];
	glGenTextures(8,texId);
	for(int i=0;i<8;i++){
		glBindTexture(GL_TEXTURE_2D,texId[i]);
		printf("tex[%d].id:%d
",i,texId[i]);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
		ilGenImages(1,&ilh[i]);
		ilBindImage(ilh[i]);
		if(!ilLoadImage(image[i])){
			printf("error:image[%d] load failed.
",i);
			exit(1);
		}
		if(!ilConvertImage(IL_RGBA,IL_FLOAT)){
			printf("error:image[%d] convert failed.
",i);
		}
		glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA32F_ARB,layerNode->shape.lenS,layerNode->shape.lenT,0,layerNode->shape.format,layerNode->shape.type,(const GLfloat*)ilGetData());
		glBindTexture(GL_TEXTURE_2D,0);
		printf("image[%d].handle:%d
",i,ilh[i]);
		ilDeleteImages(1,&ilh[i]);
	}
}

/*void drawQuad(int layer)
{
    glBegin(GL_QUADS);
      glTexCoord3f(0.0,0.0,GLfloat(layer));
      //glColor4fv((col[0]).asFloat());
      glVertex2f(0.0,0.0);
      glTexCoord3f(1.0,0.0,GLfloat(layer));
      //glColor4fv((col[1]).asFloat());
      glVertex2f(256.0,0.0);
      glTexCoord3f(1.0,1.0,GLfloat(layer));
      //glColor4fv((col[2]).asFloat());
      glVertex2f(256.0,256.0);
      glTexCoord3f(0.0,1.0,GLfloat(layer));
      //glColor4fv((col[3]).asFloat());
      glVertex2f(0.0,256.0);
    glEnd();
}*/

void drawQuad()
{
    glBegin(GL_QUADS);
      glTexCoord2f(0.0,0.0);
      glVertex2f(0.0,0.0);
      glTexCoord2f(1.0,0.0);
      glVertex2f(256.0,0.0);
      glTexCoord2f(1.0,1.0);
      glVertex2f(256.0,256.0);
      glTexCoord2f(0.0,1.0);
      glVertex2f(0.0,256.0);
    glEnd();
}

void drawLayerQuad(float ox,float oy,int layer)
{
    glBegin(GL_QUADS);
      glTexCoord3f(0.0,0.0+oy,GLfloat(layer));
      glVertex2f(0.0-ox,0.0-oy);
      glTexCoord3f(256.0-ox,0.0+oy,GLfloat(layer));
      glVertex2f(256.0-ox,0.0-oy);
      glTexCoord3f(256.0-ox,256.0-oy,GLfloat(layer));
      glVertex2f(256.0-ox,256.0-oy);
      glTexCoord3f(0.0,256.0-oy,GLfloat(layer));
      glVertex2f(0.0-ox,256.0-oy);
    glEnd();
}

void renderer()
{	
    bindShaderProcessor();
	glEnable(GL_TEXTURE_2D);        
    for(int i=0;i<layerNode->shape.dim;i++){
        layerNode->asCurrentLayer(i);
	glPushAttrib(GL_VIEWPORT_BIT);
        glViewport(0,0,layerNode->shape.lenS,layerNode->shape.lenT); 
	  printf("fbo[%d].handle:%d
",i,layerNode->colorBuffer[i]);
	glActiveTexture(GL_TEXTURE0+i);
	glBindTexture(GL_TEXTURE_2D,texId[i]);
          drawQuad();     
	glPopAttrib();	
    }		
    layerNode->asLeaveLayer();       
    glDisable(GL_VERTEX_PROGRAM);
    glDisable(GL_GEOMETRY_PROGRAM);
    glDisable(GL_FRAGMENT_PROGRAM);   
    glDisable(GL_TEXTURE_2D);
    glDeleteTextures(8,texId);	


	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D_ARRAY_EXT,layerNode->shape.id);
	  printf("%s
",gluErrorString(glGetError()));
    glEnable(GL_TEXTURE_2D_ARRAY_EXT);
	  printf("%s
",gluErrorString(glGetError()));
    for(int layer=0;layer<layerNode->shape.dim;layer++){
	drawLayerQuad(ox[layer],oy[layer],layer);
	}
    glFlush();
}
 
void reshape(int x,int y)
{
    glViewport(128,128,x,y);
    glPushMatrix();
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0,(double)x,0.0,(double)y);
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
    glutPostRedisplay();
}

int main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA|GLUT_DEPTH);
    glutInitWindowPosition(256,128);
    glutInitWindowSize(512,512);
    glutCreateWindow("OpenGL framebuffer demo");
    GLenum status;
    if((status=glewInit())!=GLEW_OK){
        printf("error:GLew initialize failed.
");
		return -1;
    } 
    if(!glewIsSupported(
		"GL_EXT_texture_array" 
		"GL_NV_gpu_program4"))
	{
        printf("%s not supported.
%s not supported.
",
               "GL_EXT_texture_array",  
               "GL_NV_gpu_program4");
        return -1;
    }
    initFBO();	
    initSrcTex();	
    glutDisplayFunc(renderer);
    glutReshapeFunc(reshape);    
    glutMainLoop();
    layerNode->release();
    return 0;
}