描画をするためにはファイルを用意して読み込む必要があります。
そこで今回はテクスチャの作成処理をやってみます。
描画する画像がないと描画できないので画像を用意します。
テスト用に目覚めよプリンス!で使っているヒットマンの画像を用意しました。
テスト用画像がない人は右クリック保存で「test_ene.png」で保存してください。
この画像を使うためにEclipseのプロジェクトにある「assets」フォルダの下に「test」フォルダを作ってください。
そのフォルダに表示する画像をD&Dしてください。
するとこんな感じになると思います。
これでこの画像ファイルを読み込めるようになりました。
ではこの画像ファイルを読み込んでみましょう。
画像データを管理するためのクラスを用意します。
画像ファイルからテクスチャを作るにはPictureクラスが便利です。
androidにも同じ名前のクラスがありますがこちらはオリジナルのクラスなのでimportに注意です。
Pictureクラスを用意したソースが↓のような感じです。
import com.hitman.Graphics.Picture; public class MainActivity extends Activity implements GLSurfaceView.Renderer { // コンストラクタ public MainActivity() { : : m_Image = null; } : : private Picture m_Image;
次にファイルから画像データを読み込んでPictureのインスタンスを作成します。
// 描画フレーム @Override public void onDrawFrame( GL10 gl ) { // シーンの更新 m_DrawDevice.Begin( gl ); { // テクスチャがなければ読み込む if( m_Image == null ) { InputStream inputStream = null; try { // ファイルを読み込む inputStream = getAssets().open( "test/test_ene.png" ); } catch( IOException e ) { e.printStackTrace(); } if( inputStream != null ) { // テクスチャを作成 { m_Image = new Picture(); m_Image.Load( m_DrawDevice, inputStream ); } // インプットストリームを閉じる try { inputStream.close(); } catch( IOException e ) { e.printStackTrace(); } } } } m_DrawDevice.End(); }
ファイル読み込みやテクスチャの作成はonDrawFrame()メソッドの中でやります。
Pictureクラスのインスタンスが作られてないときはまだ読み込んでないので読み込みます。
getAssets().open()で先程画像を放り込んだassetsフォルダにアクセスできるようになります。
ファイルパスは先程画像を放り込んだパスになります。
次にPictureクラスのインスタンスを作成し、画像ファイルを読み込みます。
最後にInputStreamを閉じて終了です。
以上で描画するためのテクスチャが出来上がります。
次は、このテクスチャを使って描画してみます。