2012-03-01 7 views
0

JNI上でOpenGL-ES 2.0とC++を使ってすべてをレンダリングするAndroid Appを作成しました。 Renderbuffersが何らかの形で乱れているように見え、画像はその影のように見えます。何とか動きのぼけが好きで、私はこの原因を知らない。OpenGL-ES、JNI、C++でAndroid上でフレームが乱れるように見える

GLSurfaceViewでアクティビティを作成するのは、描画のレンダー呼び出しがレンダリングされるレンダラークラスです。この奇妙な行動の原因は何でしょうか?

すべてのものを作成したJavaコード(マイナスいくつかの無関係なもの)は次のようになります。

public class Main extends Activity 
{ static MainLoop mloop = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { super.onCreate(savedInstanceState); 
     mloop = new MainLoop() 
     setContentView(mloop); 
    } 
    . 
    . 
    . 
} 

(再びマイナスいくつかの無関係なもの)は、このようなルックスをレンダリングするJavaコード:

public class MainLoop extends GLSurfaceView 
{ . 
    . 
    public MainLoop() 
    { super(parent); 
     setEGLContextClientVersion(2); 
     setEGLConfigChooser(8, 8, 8, 8, 0, 0) 
     // 
     this.getHolder().setFormat(PixelFormat.TRANSLUCENT); 
     // 
     setRenderer(new Renderer());   
    } 
    . 
    . 

    private static class Renderer implements GLSurfaceView.Renderer 
    { public void onDrawFrame(GL10 gl) 
     { JNIRender(); 
     } 
     public void onSurfaceChanged(GL10 gl, int width, int height) 
     { JNIChanged(); 
     } 
     public void onSurfaceCreated(GL10 gl, EGLConfig config) 
     { JNICreate(); 
     } 
    } 
} 

全体のレンダリングはC++のJNIRender呼び出しで行なわれ、すべての外観が影のように見える不規則なものを除いてはきれいに見えます。私が考慮に入れなければならないことや、間違っていることはありますか?

答えて

0

私がチェックし、バッファが自動的に表示されているので、私はJavaで使用されたときに悪いです私のC++コードでswapbufferコマンドを持っていることがわかりましたとにかくこれは物事を混乱させる。

私のswapbufferコマンドは、gccでコンパイルするときに使用されていないifdefに入れました。

1

野生の推測ですが、何かを描画する前にバッファをクリアしていますか?あなたのC++コードの使用では

このあなたが何かを描画する前に:

glClearColor(0,0,0,1); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BIT); 
+0

ご返信ありがとうございます。私はチェックし、私はバッファが自動的にとにかく表示されているため、これは物事を混乱させるため、javaで使用されるときに悪い私のC + +コードでswapbufferコマンドがあることがわかりました。 – HardCoder

関連する問題