2013-01-20 6 views
0
Texture texture = loadTexture("main_menu/bg");  
texture.bind(); 

    glBegin(GL_QUADS); 

     glTexCoord2f(0, 0); 
     glVertex2i(1, 1); 

     glTexCoord2f(0, 1); 
     glVertex2i(1, 720); 

     glTexCoord2f(1, 1); 
     glVertex2i(1280, 720); 

     glTexCoord2f(1, 0); 
     glVertex2i(1280, 1); 
    glEnd(); 

J'utilise la bibliothèque LWJGL avec slick2D. Je rends des textures avec le dessus, mais les textures ont une position incorrecte. J'ai 1280x720 plein écran fenêtre et je rends la texture d'arrière-plan sur la fenêtre, mais la texture est réduite à l'axe X à 2/3 de la fenêtre et à l'axe Y à 3/4 de la fenêtre.OpenGL taille de texture incorrecte

J'ajoute la configuration de openGL, donc la voici:

WINDOW_WIDTH = 1280; 
WINDOW_HEIGHT = 720; 

glEnable(GL_TEXTURE_2D); 
glDisable(GL_DEPTH_TEST); 
glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

glOrtho(0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, -1, 1); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity();  
glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); 

Et voici la méthode des textures de chargement:

private Texture loadTexture(String key) { 
try { 
    return TextureLoader.getTexture("PNG", new FileInputStream(
      new File("res/" + key + ".png"))); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
return null; 
} 

Répondre

0

En OpenGL1, les largeurs de texture et les hauteurs doivent être des puissances entières de 2, par exemple

128x128, 256x256, 512x64, ...

vôtre semblent être 1280x720, ce qui est pas. :) Notez que vos dimensions ne comptent pas dans OpenGL2.

+0

Si vous n'utilisez pas 2 textures lorsqu'elles ne sont pas supportées, la texture devient blanche, cela n'a rien à voir avec la taille à l'écran. – Kevin