void LoadGLTextures(int i) { char *str; int x = 0; ILubyte *newdata,*snewdata; ILubyte *sdata; str = (char *)malloc(20*sizeof(char)); newdata = (ILubyte *)malloc(128*128*sizeof(ILubyte)); snewdata = newdata; x = i; ilGenImages(i, &texture[i]); ilBindImage( texture[i] ); ilLoad(IL_PNG,names[i]); data = ilGetData(); sdata = data; Mdata[i] = data; glBindTexture (GL_TEXTURE_2D,texture[i]); glTexImage2D(GL_TEXTURE_2D, 0, 2, 128, 128, 0, L_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,(ILubyte*)ilGetData()); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR); data = ilGetData(); } void drawVolume(void) { int i=0; double z = -3.5, x = -3.5, y = -3.5; for(i = 1; i < 70 ; i++) { glBindTexture(GL_TEXTURE_2D, texture[i]); glTexImage2D(GL_TEXTURE_2D, 0, 2, 128, 128, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, Mdata[i]); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f( -3.5f, -3.5f, z); glTexCoord2f(1.0f, 0.0f); glVertex3f( 3.5f, -3.5f, z); glTexCoord2f(1.0f, 1.0f); glVertex3f( 3.5f, 3.5f, z); glTexCoord2f(0.0f, 1.0f); glVertex3f( -3.5f, 3.5f, z); z += .1; glEnd(); } glutSwapBuffers(); } void display( void ) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef (transX, transY, transZ); glRotatef (rotatex, 1.0f, 0.0f, 0.0f); glRotatef (rotatey, 0.0f, 1.0f, 0.0f); glRotatef (rotatez, 0.0f, 0.0f, 1.0f); glScalef(sc,sc,sc); // Draw_Scene glEnable(GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //glBlendFuncSeparateEXT(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); //glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC) wglGetProcAddress("glBlendEquationEXT"); //if( glBlendEquationEXT == NULL) //fprintf(stderr," The tade does not supported by this renderer\n"); //glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_ONE); //glBlendEquationEXT(GL_MIN_EXT); //glColor3f(0.0,0.0,1.0); //glEnable(GL_ALPHA_TEST); //glAlphaFunc(GL_GEQUAL,0.20); glutWireCube(15.0f); drawVolume(); glMatrixMode(GL_MODELVIEW); glutSwapBuffers(); glutPostRedisplay(); }