2012-02-01 12 views
0

私はJavaでAndroid上のOpen GLESでゲームをデザインしています。onDrawFrame(GL10 gl)にコンテキストを渡す方法はありますか?

明らかに私はたくさんのテクスチャを使用していますが、まもなくメモリがなくなります。

私はAndroidとJavaでかなり新しくなっていますが、この問題を回避する最も簡単な方法はビットマップでオブジェクトを破棄することです。これは不要ですが、ガベージコレクタでメモリを再利用できるようにしますそれらが占有していた後、それぞれのテクスチャが再び必要になったときに、後の段階でそれらのオブジェクトを再作成します。

このような何か:

background = null; 

を、私は背景オブジェクトにテクスチャを必要とするとき:それはある以外

background = new Background(context); 

は、かなりstraighforwardようだ、私は私のクラスのために必要なコンテキスト(つまりBitmapFactoryを介してテクスチャを読み込むときに背景が機能する)は、onDrawFrame(GL10 gl)関数に渡されません。ここでは、私のメインゲームループがどこにあり、どこで必要なのですか?

GL10 glの後に2番目のパラメータとしてコンテキストを追加しようとすると、エラーが発生します。これは可能ではないようです。

誰かがコンテキストをonDrawFrameに渡す方法を知っていますか、またはコンテキストオブジェクトをメモリから消去してから再び元に戻す方法は他にありますか?

答えて

0

SurfaceViewまたはGLSurfaceView ...に描画する必要があります。これは明らかにタイプがViewであるため、getContext()メソッドがあります。

+0

はそれがない
GLSurfaceView.Renderer

EasyCoder

+0

GLSurfaceView.Renderer>クラスの概要>パブリックメソッド> onDrawFrame(GL10 GL)/ onSurfaceChanged(GL10のGL、int型の幅、int型の高さ)/ onSurfaceCreated(GL10のGL、EGLConfigんI'afraid config) - これらの3つの方法だけが、私は恐れています。 – EasyCoder

+0

これは*インターフェース*です。私はビュー*を参照していました。どのオブジェクトがそのインタフェースを実装しているかは重要ではありません。カスタムGLSurfaceView内で実装することは非常に一般的です。つまり、「class MySurfaceView extends GLSurfaceView extends GLSurfaceView.Renderer」です。 –

関連する問題