0

私はたくさんグーグルで検索しましたが、これに対する答えが見つかりませんでした。画像のロード方法は知っていますが、256 x 256 または 2 の累乗でない画像をロードする必要があります。

たとえば、128 x 384 などの画像を読み込むにはどうすればよいでしょうか。

私が今使っているもの:

画像をロードします。

    public static Texture cow = loadTexture("res/cow.png");

    private static Texture loadTexture(String file){
        try {
            return TextureLoader.getTexture("JPG", new FileInputStream(new File(file)));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

3D ポリゴン面に描画するには:

            txt.bind();
        GL11.glBegin(GL11.GL_QUADS);
        {
            //GL11.glColor3d(lightLevel, lightLevel, lightLevel);
            GL11.glColor3d(l, l, l);
            GL11.glTexCoord2f(0,0); GL11.glVertex3f(x1,y1, z1);
            GL11.glTexCoord2f(1,0); GL11.glVertex3f(x1+(x2-x1), y1,z1);
            GL11.glTexCoord2f(1,1); GL11.glVertex3f(x1+(x2-x1), y1+(y2-y1), z1+(z2-z1));
            GL11.glTexCoord2f(0,1); GL11.glVertex3f(x1,y1+(y2-y1),  z1+(z2-z1));
        }
        GL11.glEnd();

これで完璧に動作するようになりました。あとは、2 のべき乗でない画像を読み込むだけです。

4

1 に答える 1

1

slick2d を使用することもできます。これははるかに使いやすく、lwjgl で動作します。あなたがしなければならないことは次のとおりです。

    Image title = null;

    public static void main(String[] args) {

}

@Override
public void init(GameContainer Gc, StateBasedGame Sbg)
        throws SlickException {

    /**
     * Images
     */

    title = new Image("gfx/main_menu/title/new_title.png");
}

@Override
public void render(GameContainer Gc, StateBasedGame Sbg, Graphics G)
        throws SlickException {

    /**
     * Background
     */

    G.setColor(Color.white);
    G.fillRect(0, 0, w*s, h*s);

    /**
     * Images
     */

    title.draw(titleY*s,titleX*s);
}
于 2013-05-20T21:54:34.460 に答える