2012-01-10 11 views
3

私は、OpenGLを使用して芝生のフィールドに3DボールをレンダリングするAndroidアプリケーションを開発しています。ユーザーはボールとやりとりすることができます(タッチで回転させます)。Android OpenGL ESひずみ画像

問題は次のとおりです。すべてが私のSamsung Galaxy S2でうまく動作しますが、他のデバイス(HTCの信じられないほどのS、HTCの感覚など)で試してみると、歪んだイメージが表示されます。画面(attached imageを参照)。

私は考えることができるすべてを試しました:テクスチャを無効にする、ライトを無効にする、など...何も動作していないようです。

実際のコードがなければ手伝いが難しいことは分かっていますが、コードのどの部分がこれを引き起こしているのか分かりません。だから、誰かがこの問題を引き起こしている可能性があることを知っているかどうかを尋ねています。

私の推測では、

は、添付された画像を見て、あなたは問題が何であるかを知っていれば私に知らせて... GLSurfaceViewやレンダラのサブクラスまたはそれらのオブジェクトの作成順に関連するものです。

enter image description here

EDIT: onSurfaceCreatedコード:

@Override 
public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); 
    gl.glShadeModel(GL10.GL_SMOOTH); 
    gl.glClearDepthf(1.0f); 
    gl.glEnable(GL10.GL_DEPTH_TEST); 
    gl.glDepthFunc(GL10.GL_LEQUAL); 
    gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); 
    gl.glEnable(GL10.GL_TEXTURE_2D); 
    gl.glEnable(GL10.GL_NORMALIZE); 
} 
+0

どのバージョンのGalaxy S2を使用していますか? Wikipediaには、異なるGPUを使用する異なるモデルがあります。 –

+0

モデル番号:GT-I9100 でも、ギャラクシーノートでもテストしましたが、うまく動作します –

答えて

4

私の友人。私は過去に同じ問題を経験しており、それはgpuによってサポートされている深さのビット数によるものです。たとえば私の銀河では24ビットのデプスバッファをサポートしていましたが、tegra2デバイスでは16ビットしか使用できませんでした。とにかく、sokutionは、それに応じてそれを設定する必要があるegl config設定機能の間です。

私はあなたをgelpすることができますので、egl設定のコードを投稿してみてください。

p.s.乗っようこそ:)

+0

OK ...見つけました!私はこれで1週間を無駄にした。ありがとう、私の人生を救った男。 –

+0

助けてくれてうれしいです。申し訳ありませんが、私は昨日の夜に眠っている間に私のハンドヘルドデバイスからの最初の応答を書いた:) –

2

マウリツィオの答えに追加するには、あなたのGLSurfaceViewにEGLの設定を設定することができます。

mGLSurfaceView.setEGLConfigChooser(redSize, greenSize, blueSize, alphaSize, depthSize, stencilSize); 
mGLSurfaceView.getHolder().setFormat(PixelFormat); 

あなたはhereもう少し読むことができます。あなたが経験したように、これは異なるグラフィックスチップに非常に悪影響を与える可能性があることに注意してください。歪んだ画像から明白な理由のない非常に低い性能まで。

+0

まさに私がやったことと今はうまくいきます。ありがとう! –

関連する問題