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のセットアップを追加しているので、ここにあります:

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のようですが、1つではありません。:) OpenGL2 では寸法は重要ではないことに注意してください。

于 2013-01-20T13:10:54.940 に答える