glTexParameteri(GL_TEXTURE_1D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage1D(GL_TEXTURE_1D,0,GL_RGB,
64,0,
//width,border
GL_RGB,GL_UNSIGNED_BYTE, image1D);
//int flag = 0;
if(flag==2) { }
else if(flag==1) {
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL); glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);//GL_MODULATE);
} else
//glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR); //GLfloat coeff[]={1.0,0.0,0.0,0.0}; //glTexGenfv(GL_S,GL_OBJECT_PLANE,coeff); glEnable(GL_TEXTURE_1D);
//自动生成一维纹理
{ }
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_1D);
glBegin(GL_QUADS);
if(flag == 2) {
//二维纹理
for(int a = 0; a < 36; a++) {
for(int r = 0; r < 9; r++) {
double n[3];
Normal(parabolicSurf[a][r], parabolicSurf[a][r + 1], parabolicSurf[(a + 1)6][r + 1], n);
glTexCoord2d(parabolicSurf[a][r][0]/2.0 + 0.5, parabolicSurf[a][r][1]/2.0 + 0.5);
glVertex3dv(parabolicSurf[a][r]);
glNormal3dv(n);
glTexCoord2d(parabolicSurf[a][r + 1][0]/2.0 + 0.5,
parabolicSurf[a][r + 1][1]/2.0 + 0.5);
glTexCoord2d(parabolicSurf[(a + 1)6][r + 1][0]/2.0 + 0.5,
glVertex3dv(parabolicSurf[a][r + 1]);
parabolicSurf[(a + 1)6][r + 1][1]/2.0 + 0.5);
glTexCoord2d(parabolicSurf[(a + 1)6][r][0]/2.0 + 0.5,
glVertex3dv(parabolicSurf[(a + 1)6][r + 1]);
parabolicSurf[(a + 1)6][r][1]/2.0 + 0.5);
Normal(parabolicSurf[a][r], parabolicSurf[a][r + 1], parabolicSurf[(a + 1)6][r + 1], n);
if(flag == 1) {
for(int a = 0; a < 36; a++) {
for(int r = 0; r < 9; r++) {
double n[3];
//一维纹理
}
}
}
glVertex3dv(parabolicSurf[(a + 1)6][r]);
glNormal3dv(n);
glTexCoord1d(parabolicSurf[a][r][0]/2.0 + 0.5); glVertex3dv(parabolicSurf[a][r]);
glTexCoord1d(parabolicSurf[a][r + 1][0]/2.0 + 0.5); glVertex3dv(parabolicSurf[a][r + 1]);
glTexCoord1d(parabolicSurf[(a + 1)6][r + 1][0]/2.0 + 0.5); glVertex3dv(parabolicSurf[(a + 1)6][r + 1]);
}
}
}
glTexCoord1d(parabolicSurf[(a + 1)6][r][0]/2.0 + 0.5); glVertex3dv(parabolicSurf[(a + 1)6][r]);
else //无纹理 {
for(int a = 0; a < 36; a++) {
for(int r = 0; r < 9; r++) {
glNormal3dv(vertexNormal[a][r]);
}
glVertex3dv(parabolicSurf[a][r]);
glNormal3dv(vertexNormal[a][r + 1]); glVertex3dv(parabolicSurf[a][r + 1]);
glNormal3dv(vertexNormal[(a + 1)6][r + 1]); glVertex3dv(parabolicSurf[(a + 1)6][r + 1]);
}
}
}
glNormal3dv(vertexNormal[(a + 1)6][r]); glVertex3dv(parabolicSurf[(a + 1)6][r]);
glEnd();
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_1D);
void display(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);