書き込み可能なテクスチャを作成
今までテクスチャはロードしたらそのまま、せいぜい最初の引数でBufferedImageを渡して動的に作れるようにした程度だった。
そこで書き込み可能なテクスチャを用意した。
描画は通常のスプライトと同じ。というかSGWritableTextureはSGTextureを継承してるのでそのまま。
SGWritableTexture pcg; @Override public void init(SGGraphic graphic) { pcg = graphic.createSGWritableTexture(64 , 64);//64*64のテクスチャサイズ } @Override public boolean mainLoop(SGGraphic graphic) { //自前Java2D描画開始 Graphics2D g = pcg.beginGraphics2D(); //透明色で塗りつぶす(描画したところ以外は透過させたい) g.setBackground(new Color(0,0,0,0)); g.clearRect(0,0,64,64); //緑色で円を塗りつぶす g.setColor(Color.GREEN); g.fillArc(0, 0, 64, 64, 0, 360); g.dispose();//Graphics2Dの描画終了 pcg.endGraphics2D(); //自前Java2D描画終了 //描画は普通のテクスチャと同じ graphic.putSprite(0, pcg, 100 ,200); }
これでえふおうさんの要望に少しでもこたえることが出来るかな。トーチカのようなものも作れるはず。
一番使いやすいのはまずちゃんとしたフォントやキャラクターを用意する前に手軽にテクスチャが結い出来ること。たとえば数字の「0」から「9」までのテクスチャを用意せずにJava2Dで描画しておけばスコア等の表示が可能になる。STGの自機に「▲」みたいなのを描画しておくということも可能だ。そういう使い方の場合はinitメソッドの中でやっておくとよい。動的に加工していきたい場合はメインループ中で。