2013-01-20 88 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(); 

我使用帶有slick2D的LWJGL庫。我以上述方式渲染紋理,但紋理的位置不正確。我有1280x720全屏窗口,我在窗口上渲染背景紋理,但紋理在X軸上減少到窗口的2/3,在Y軸上減少到窗口的3/4。OpenGL壞紋理大小

我加入的OpenGL設置,所以在這裏它是:

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); 

這裏是加載紋理方法:

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; 
} 

回答

0

在OpenGL1,紋理的寬度和高度必須是整數次冪2,例如

128×128,256×256,512x64,...

此致似乎是1280×720,這是不是一個。 :) 請注意,您的尺寸在OpenGL2中無關緊要。

+0

如果在不支持2種紋理的情況下使用非功率紋理,紋理變爲白色,則與屏幕上的大小無關。 – Kevin