Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void drawsphere()
- {
- #define PI 3.14159265358979323846f
- int width = 32;
- int height = 16;
- float theta, phi, *dat;
- int i, j, t, ntri, nvec, *idx;
- nvec = (height-2)* width+2;
- ntri = (height-2)*(width-1)*2;
- dat = (float*) malloc( nvec * 3*sizeof(float) );
- idx = (int*) malloc( ntri * 3*sizeof(int) );
- for( t=0, j=1; j<height-1; j++ )
- for( i=0; i<width; i++ )
- {
- theta = float(j)/(height-1) * PI;
- phi = float(i)/(width-1 ) * PI*2;
- dat[t++] = sinf(theta) * cosf(phi);
- dat[t++] = cosf(theta);
- dat[t++] = -sinf(theta) * sinf(phi);
- }
- dat[t++]=0; dat[t++]= 1; dat[t++]=0;
- dat[t++]=0; dat[t++]=-1; dat[t++]=0;
- for( t=0, j=0; j<height-3; j++ )
- for( i=0; i<width-1; i++ )
- {
- idx[t++] = (j )*width + i ;
- idx[t++] = (j+1)*width + i+1;
- idx[t++] = (j )*width + i+1;
- idx[t++] = (j )*width + i ;
- idx[t++] = (j+1)*width + i ;
- idx[t++] = (j+1)*width + i+1;
- }
- for( i=0; i<width-1; i++ )
- {
- idx[t++] = (height-2)*width;
- idx[t++] = i;
- idx[t++] = i+1;
- idx[t++] = (height-2)*width+1;
- idx[t++] = (height-3)*width + i+1;
- idx[t++] = (height-3)*width + i;
- }
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_NORMAL_ARRAY);
- glVertexPointer(3,GL_FLOAT,0,dat);
- glNormalPointer(GL_FLOAT,0,dat);
- glDrawElements(GL_TRIANGLES, ntri*3, GL_UNSIGNED_INT, idx );
- glDisableClientState(GL_VERTEX_ARRAY);
- glDisableClientState(GL_NORMAL_ARRAY);
- free(idx);
- free(dat);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement