package framework.RWT; import javax.microedition.khronos.opengles.GL10; import java.util.ArrayList; /** * スプライト管理クラス * * @author s.iwatani */ public class RWTSprites { private ArrayList<RWTSprite> sprites = new ArrayList<>(); public RWTSprites() {} /** * スプライトの追加 * * @author s,iwatani * @param sprite 追加したいRWTSprite */ public void addSprite(RWTSprite sprite) { sprites.add(sprite); } /** * スプライトの削除 * * @author s.iwatani * @param sprite 削除したいRWTSprite */ public void removeSprite(RWTSprite sprite) { sprites.remove(sprite); } /** * 登録されたスプライトの描画 * * @param gl GL10 */ public void draw(GL10 gl) { // なんかやってる gl.glDisable(GL10.GL_DEPTH_TEST); gl.glDisable(GL10.GL_DITHER); gl.glDisable(GL10.GL_LIGHTING); // gl.glEnable(GL10.GL_ALPHA_TEST); // アルファ値を適用するための一連 gl.glEnable(GL10.GL_ALPHA); // GL_INVALID_ENUMが出るけどちゃんと動いてる.謎 gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glEnable(GL10.GL_BLEND); gl.glEnable(GL10.GL_TEXTURE_2D); // テクスチャ0番をアクティブにする(よくわからん) gl.glActiveTexture(GL10.GL_TEXTURE0); // 描画 for (RWTSprite sprite : sprites) { sprite.draw(gl); } // 戻し gl.glEnable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_DITHER); gl.glEnable(GL10.GL_LIGHTING); gl.glDisable(GL10.GL_ALPHA); } }