書き込み可能なテクスチャを作成

今までテクスチャはロードしたらそのまま、せいぜい最初の引数で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メソッドの中でやっておくとよい。動的に加工していきたい場合はメインループ中で。


スクリーンショット機能のおかげでレンダリングが確認できて便利になってる。えふおうさんサンキュ!