0

Slick2Dbind()機能を使用して OpenGL で画像を描画しようとすると、多くの問題が発生します。

Imageから取得した I を使用していgetSubImageます。メソッドを使用すると、graphics.drawImage()この画像が完全に描画されます。ただし、を使用すると、このサブイメージを取得bind()した全体Imageがバインドされるため、サブイメージをバインドできませんか、それとも間違っていますか?

私のコードからの抜粋:

私のクラスのコンストラクターで:

ui = new Image("resources/img/ui/ui.png");
// I've tried with SpriteSheet too but Image is more appropriate for my purposes.
border_t = ui.getSubImage(12, 24, 12, 12);

render メソッドでは:

border_t.bind();
graphics.setColor(Color.white);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(12, 0);
GL11.glTexCoord2f(9, 0);
GL11.glVertex2f(108, 0);
GL11.glTexCoord2f(9, 1);
GL11.glVertex2f(108, 12);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(12, 12);
GL11.glEnd();

これにより、スプライトシート全体が、私が望んでいた上部の境界線ではなく、9 倍に大幅に縮小されてレンダリングされます。

この機能は Slick2d に欠けていますか? バグですか?それとも、単に間違ったことをしているだけですか?

4

1 に答える 1

2

「サブイメージ」は Slick2D の構成要素であり、Slick2Dのみです。OpenGL と直接話し始めると、Slick2D の概念ではなく、OpenGLの概念を使用するようになります。

そこには「サブイメージ」はありません。テクスチャしかありません。テクスチャの一部をバインドすることはできません。全体をバインドする必要があります。テクスチャのサブセットをレンダリングする場合は、それに応じてテクスチャ座標を調整して、その部分だけを選択する必要があります。

そのため、サブイメージでの使用bindはあまり役に立ちません。

于 2013-05-18T12:00:04.533 に答える