package entities; import static org.lwjgl.opengl.GL11.*; //--------------------------------------------------------------- // public class Image2D { private int id; // テクスチャのID private Vec2 wh; // スプライトの幅高 private Vec2 position; // スプライトの座標(画面座標) private Color color; // スプライトの色 private double rotation; // 回転(度) private double scale; // 拡大 private double alpha; // 透明度 //--------------------------------------------------------------- //--------------------------------------------------------------- // public Image2D(Texture tex, double x, double y) { if (tex != null) this.id = tex.getId(); else this.id = 0; this.position = new Vec2(x, y); this.color = new Color(1, 1, 1, 1); if (tex != null) wh = new Vec2(tex.getWidth(), tex.getHeight()); else wh = new Vec2(30, 30); rotation = 0.0; scale = 1.0; alpha = 1.0; } //--------------------------------------------------------------- //--------------------------------------------------------------- // setter public void setRotation(double rotation) { this.rotation = rotation; } //--------------------------------------------------------------- //--------------------------------------------------------------- // public void draw() { // テクスチャの結合 glBindTexture(GL_TEXTURE_2D, id); // 変換行列の追加 glPushMatrix(); // モデルビューモード glMatrixMode(GL_MODELVIEW); // 行列の設定 glLoadIdentity(); // 単位行列化 glTranslated(position.getX(), position.getY(), 0); // 移動 glRotated(rotation, 0, 0, 1); // 回転 glScaled(scale, scale, 1); // 拡縮 // プロジェクションモード glMatrixMode(GL_PROJECTION); // 行列の設定 glLoadIdentity(); // 単位行列化 glOrtho(0, Const.WIDTH, 0, Const.HEIGHT, -Const.DEPTH, Const.DEPTH); // 正射影投影 // ビューポートの範囲 glViewport(0, 0, Const.WIDTH, Const.HEIGHT); // ポリゴンの色 glColor4d(color.getR(), color.getG(), color.getB(), alpha); // ポリゴンの作成とテクスチャの適応 glBegin(GL_TRIANGLE_STRIP); glTexCoord2d(0, 0); glVertex2d(-wh.getX() / 2, wh.getY() / 2); glTexCoord2d(0, 1); glVertex2d(-wh.getX() / 2, -wh.getY() / 2); glTexCoord2d(1, 0); glVertex2d(wh.getX() / 2, wh.getY() / 2); glTexCoord2d(1, 1); glVertex2d(wh.getX() / 2, -wh.getY() / 2); glEnd(); // 行列の破棄 glPopMatrix(); // テクスチャの解除 glBindTexture(GL_TEXTURE_2D, 0); } //--------------------------------------------------------------- }