-(void)display
{
    static GLfloat lightPosition[4] = { 20.0, 20.0, 21};
    static GLfloat lightDefuse[4] = { 1.0, 1, 1, 1.0};
    static GLfloat lightAmbient[4] = { 1.0, 1.0, 1.0, 1.0};
    //NSLog(@"__display");
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    
 
    //绘制3d模型
    glEnable( GL_LIGHTING);
    glEnable( GL_LIGHT0);
    glEnable(GL_COLOR_MATERIAL);
    //粗糙反射
    glLightfv( GL_LIGHT0, GL_DIFFUSE, lightDefuse);
    //多次反射
    glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient);
    glLightf( GL_LIGHT0, GL_SPOT_EXPONENT, 68);        
    glLightfv( GL_LIGHT0, GL_POSITION, lightPosition);
 
    glMatrixMode(GL_MODELVIEW);    
 
    glLoadIdentity();    
 
    glTranslatef( 0, -0, -5);
 
    glRotatef(g_RotateX, 0, 1.0f, 0);
    g_RotateX -= 5;    
    for(int i = 0; i < g_3DModel.numOfObjects; i++)
    {
        if(g_3DModel.pObject.size() <= 0) break;
 
        t3DObject *pObject = &g_3DModel.pObject[i];
 
 
        if(pObject->bHasTexture) {
 
            glEnable( GL_BLEND);
            glEnable(GL_TEXTURE_2D);
            glBindTexture(GL_TEXTURE_2D, tex.name);
        } else {
            glDisable(GL_TEXTURE_2D);
            glColor4f(1, 1, 1, 1);
        }
        for(int j = 0; j <pObject->numOfFaces; j++)
        {
            glPushMatrix();
            GLfloat normalV[9] = {0};
            GLfloat vertex[9] = {0};
            GLfloat texcoord[6] = {0};
            GLfloat color[12] = {0};
            for(int whichVertex = 0; whichVertex < 3; whichVertex++)
            {
                int index = pObject->pFaces[j].vertIndex[whichVertex];
 
                normalV[whichVertex*3] =  pObject->pNormals[ index ].x;
                normalV[whichVertex*3+1] = pObject->pNormals[ index ].y;
                normalV[whichVertex*3+2] = pObject->pNormals[ index ].z;
                if(pObject->bHasTexture) {
 
                    if(pObject->pTexVerts) {
                        texcoord[(whichVertex)*2] = pObject->pTexVerts[ index ].x;
                        texcoord[(whichVertex)*2+1] = pObject->pTexVerts[ index ].y;
                    }
                } else {
 
                    if(g_3DModel.pMaterials.size() && pObject->materialID >= 0) 
                    {
                        GLubyte *pColor = g_3DModel.pMaterials[pObject->materialID].color;
 
                        color[whichVertex*4] = pColor[0]/(float)255;
                        color[whichVertex*4+1] = pColor[1]/(float)255;
                        color[whichVertex*4+2] = pColor[2]/(float)255;
                        color[whichVertex*4+3] = 1;
                    }
                }
                vertex[whichVertex*3] = pObject->pVerts[ index ].x;
                vertex[whichVertex*3+1] = pObject->pVerts[ index ].y;
                vertex[whichVertex*3+2] = pObject->pVerts[ index ].z;
 
            }
 
            if(pObject->bHasTexture) {
                if(pObject->pTexVerts) {
                    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
                    glTexCoordPointer ( 2, GL_FLOAT, 0, texcoord);
                }
            } else {
 
                if(g_3DModel.pMaterials.size() && pObject->materialID >= 0) 
                {
                    glEnableClientState(GL_COLOR_ARRAY);
                    glColorPointer(4, GL_FLOAT, 0, color);
                }
            }
            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
            glEnableClientState(GL_VERTEX_ARRAY);
            glEnableClientState(GL_NORMAL_ARRAY);
 
            glBindTexture(GL_TEXTURE_2D,tex.name);
            glTexCoordPointer(2, GL_FLOAT, 0,texcoord);
            glVertexPointer (3, GL_FLOAT, 0, vertex);
 
 
            //glColor4f(0.9, 0.5, 0.5, 1);
            glScalef(0.5,0.5, 0.5);
 
 
            glNormalPointer(GL_FLOAT, 0, normalV);
 
            glDrawArrays(GL_TRIANGLES, 0, 3);
            glDisableClientState(GL_VERTEX_ARRAY);
            glDisableClientState(GL_NORMAL_ARRAY);
            glDisableClientState(GL_TEXTURE_COORD_ARRAY);
            if(pObject->bHasTexture) {
 
                if(pObject->pTexVerts) {
                    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
                }
            } else {
 
                if(g_3DModel.pMaterials.size() && pObject->materialID >= 0) 
                {
                    glDisableClientState(GL_COLOR_ARRAY);
                }
            }
            if(pObject->bHasTexture){
                glDisable(GL_TEXTURE_2D);
            }
            glPopMatrix();
        }
 
    }
 
 
 
    NSLog(@"________________exit");
    glDisable( GL_LIGHT0);
    glDisable( GL_LIGHTING);
    [self drawView];
}
 
这个是我绘制3ds模型的绘制代码,目前能绘制出模型,如果模型是有颜色组成没有贴图能正常绘制出来,如果模型有贴图就只能绘制出一个白色的模型,贴图贴不上去。请各位大大帮忙看看,这是为什么呢?