Coucou a tous !
Je suis entrain d'afficher une simple image ( jpg , 1024*768) comme "fond" pour mon apli .
Jusque la pas de pb.
Le hic vient du fait que l'image final est un peu flouté, pixelisé ( enfin, comme si l'on avais fait un redimentionnement a la va-vite ) ; ce qui ne devrait pas être le cas , car mon quad, mon ecran, mon image ont la meme taille !!! ( 1024*768 )
j'utilise opengl +sdl .
mon initialisation ressemble a ca:
Ma boucle d'affichage est comme ceci :SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_BUFFER_SIZE, NbDeByte );
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, NbDeByte );
fenetre = SDL_SetVideoMode( width, height, NbDeByte, SDL_OPENGL | SDL_FULLSCREEN );
glEnable( GL_DEPTH_TEST );
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluOrtho2D(0,width,0,height );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(1,1,1,1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
et pour l'instant , le seul objet affiché ( j'ai réduit le pb au mini ) est cette image :void cIntroState::draw()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
glMatrixMode( GL_MODELVIEW );
glEnable(GL_DEPTH_TEST);
cGameItem::GetInstance().Draw();
SDL_GL_SwapBuffers();
}
J'ai testé en supprimant le blending ... mais bon, ca ne semble pas venir de la ; si vous avez des idées ....glDisable( GL_DEPTH_TEST );
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glEnable (GL_TEXTURE_2D);
glBindTexture (GL_TEXTURE_2D, background_id );
glBegin(GL_QUADS);
glColor4d(255,255,255,1) ;
glTexCoord2f (0 , 0); glVertex2f( 0, 0); // coin bas-gauche
glTexCoord2f (0 , 1); glVertex2f( 0, 768); // coin haut-gauche
glTexCoord2f (1 , 1); glVertex2f( 1024, 768); // coin haut-droite
glTexCoord2f (1 , 0); glVertex2f( 1024, 0); // coin bas-droite
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
Partager