Bon alors j'ai continué mes tests, et voilà la dernière version obtenue:
#define iw 1024
#define ih 1024
#define tf "essai.bmp"
static GLubyte im[3*iw*ih];
void lectureTexture(char *fichier,int dx,int dy) {
FILE *f = fopen(fichier,"rb") ;
if ( f ) {
for ( int i = 0 ; i < dx ; i++ )
for ( int j = 0 ; j < dy ; j++ )
fread(&im[(j*dy+i)*3],1,3,f) ;
fclose(f) ; }
}
void InitGL()
{
glClearColor(.5,.5,.5,0);
lectureTexture(tf,iw,ih) ;
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glGenTextures(1,&Nom);
glBindTexture(GL_TEXTURE_2D,Nom);
glTexImage2D (
GL_TEXTURE_2D,0,4,iw,ih,0,GL_RGBA,GL_UNSIGNED_BYTE,im);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}
void drawScene3(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glColor3f( 0.2, 0.2, 1.0 );
glTranslatef( -0.5, 0.0, -35.0);
glDisable( GL_CULL_FACE );
glutSolidTorus(0.5,2.0,40,40);
glFlush();
glutSwapBuffers();
}
void resizeWindow3(int w, int h)
{
double aspectRatio;
glViewport( 0, 0, w, h );
w = (w==0) ? 1 : w;
h = (h==0) ? 1 : h;
aspectRatio = (double)w / (double)h;
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 15.0, aspectRatio, 25.0, 45.0 );
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH );
glutInitWindowSize(500, 500);
glutInitWindowPosition(600, 600);
glutCreateWindow("Trois D");
InitGL();
glutDisplayFunc(drawScene3);
glutReshapeFunc(resizeWindow3);
glutMainLoop();
return 0;
}
Si quelqu'un peut me dire pourquoi ca marche pas...
|