3 votes

Moyen de afficher une image en utilisant C++ avec OpenGL

(i'ai mis à jour le code le nouveau meilleur)

http://www.flickr.com/photos/pkerkm/8251188947/in/photostream bonnes directions

http://www.flickr.com/photos/pkerkm/8252258464/in/photostream mauvaises directions

Nous utilisons la bibliothèque SOIL C++ openGL

Nous avons dessiné les symboles de N, S, W, E sur l'une des images que nous affichons, car nous pensions que les images étaient retournées ou affichées incorrectement. Nous avions raison, mais nous ne sommes pas sûrs de pourquoi et comment le corriger. Notre W est en haut, E en bas, S à droite et N à gauche. Cela signifie que le symbole N est sur le côté gauche, alors qu'il devrait être en haut.

Voici le code où nous générons le tableau tridimensionnel et nos images.

void genTex(){
texture[0]=SOIL_load_OGL_texture // charger un fichier d'image directement en tant que nouvelle texture OpenGL
    (
        "C:\\Users\\Pkerkm\\Documents\\Visual Studio 2010\\Projects\\files\\gameprojecgraphics\\bloodwall2.png",
        SOIL_LOAD_AUTO,
        SOIL_CREATE_NEW_ID,
        SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
    );
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
//glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
//glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
}

void /*GraphicsEngine::*/generateMap(){
  int i, k, j;
  double coordinates[8][3];
  for(i=0; i

`

}

Je pense que le problème est ici, mais je ne suis pas sûr de comment le corriger

void /*GraphicsEngine::*/getWallCoordinates(double coordinates[8][3], double x, double y, double z){
int i;
for(i=0;i<8; i++){
    if((i/4)>=1){
        coordinates[i][1]=BLOCKHEIGHT*(y+1);
    }else{
        coordinates[i][1]=BLOCKHEIGHT*y;
    }
    if((i/2)%2==0){
        coordinates[i][2]=BLOCKDEPTH*z;
    }else{
        coordinates[i][2]=BLOCKDEPTH*(z+1);
    }
    if((i%4)%3==0){
        coordinates[i][0]=BLOCKWIDTH*x;
    }else{
        coordinates[i][0]=BLOCKWIDTH*(x+1);
    }
}

}

`

2voto

user1816548 Points 1307

Il suffit de permuter les instructions glTexCoord2f pour faire tourner la texture de 90 degrés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X