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

我将 LWJGL 库与 slick2D 一起使用。我正在用上述方式渲染纹理,但纹理的位置不正确。我有 1280x720 全屏窗口,我在窗口上渲染背景纹理,但纹理在 X 轴减少到窗口的 2/3,在 Y 轴减少到窗口的 3/4。

我正在添加 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;
}
4

1 回答 1

0

在 OpenGL1 中,纹理宽度和高度必须是 2 的整数次方,例如

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

你的似乎是 1280x720,这不是一个。:) 请注意,您的尺寸在 OpenGL2 中并不重要。

于 2013-01-20T13:10:54.940 回答