私はSpriteクラスと、OpenGLSurvaceビューを使ってスプライトクラスを拡張する別のクラスを持っています。それはそれはOpenGLのテクスチャを作成するためにdecodeResource関数を呼び出すloadBitmap機能がロードされたテクスチャへの静的ポインタを使用して、あなたが見ることができるように、このEclipseでデバッガを使用しているときにOpenGLテクスチャがうまくレンダリングされますが、アプリケーションを単独で実行すると白くレンダリングされるのはなぜですか?
public class Invader extends Sprite {
static int mTextureId = -1;
Invader(Context context, float x, float y, float angle)
{
super(context, x, y, angle);
super.setSize(width, height);
// super.setPos(x, y);
// super.setAngle(angle);
// Check to see if the texture is loaded already. If it is a valid texture
// id, don't bother loading it again
if (mTextureId < 0)
{
super.loadBitmap(context.getResources(), R.drawable.piano_key_white);
}
else
{
super.setTexture(mTextureId);
}
}
@Override
protected int getTexture()
{
return mTextureId;
}
@Override
protected void setTexture(int textureId)
{
mTextureId = textureId;
}
}
ようになります。 SDKプラグインを使用してEclipseを使用してデバッガからアプリケーションを実行すると、すべてが素晴らしいように見えます。アプリケーションを通常電話で実行すると、インベーダーを白い四角形(オブジェクトの色)としてレンダリングするこのクラス以外は、すべてがうまく描画されます。
私が見つけたことから、テクスチャが適切に読み込まれていない可能性があります。したがって、白い四角形が描画されます。私は、なぜこれがデバッグで動作し、通常の実行中ではないのか分かりません。何か案は?リモートデバッグでプログラムが実行されていないときの違いは何ですか?
私はコードを読む前に私は答えました。うーん、私はあなたが何をしているのか分からず、あなたは絶対に0のOpenGLコードを投稿したので、トラブルシューティングのために何もない。私の答えを試してみてください。それがうまくいかない場合、あなたはSOLであり、実際のOpenGLコードを投稿してそれ以上の助けを必要とします。 – Kaa
投稿したコードを振り返ってみると、OpenGLコードがないことに気づきました。私はエラーが何であったかを理解したと思う。デバッグを開始して解放されたRendererオブジェクトへの静的参照がありました。しかし、デバッグせずに自分の携帯電話からプログラムを実行したとき、以前の静的リファレンスはglテクスチャIDを参照していましたが、glリソースが解放されてホワイトボックスが作成されました。 – ilektron
あなたの答えに私のコメントを読んでください。私が失礼すると謝るが、あなたが言ったことは全く意味がない。また、何も参照しないでください。混乱していてjavaに存在しません。 – Kaa