2011-09-11 9 views
3

可能性の重複:
How to get rid of Jagged edges in Android OpenGL ES?Android OpenGL ESでマルチサンプリングを行うには?

私は私のappliction.Butそれは関係なく、私が何をしたか動作しませんでアンチエイリアスをしたいです。 私のコードは、それがどのwork.Pleaseは私に理由を教えてやらなかった

public void onSurfaceCreated(GL10 gl, EGLConfig config){   
    g10 = gl; 
    gl.glClearColor(0f, 0, 0.0f, 1.0f); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, 
      GL10.GL_REPEAT); 
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, 
      GL10.GL_REPEAT); 

    gl.glSampleCoverage(1.f, true); 
    gl.glEnable(GL10.GL_DITHER); 
    gl.glEnable(GL10.GL_MULTISAMPLE); 
    gl.glEnable(GL10.GL_POINT_SMOOTH); 
    gl.glEnable(GL10.GL_LINE_SMOOTH); 
    gl.glEnable(GL10.GL_SAMPLE_COVERAGE); 
    gl.glPointSize(8); 
    gl.glLineWidth(5); 
    gl.glHint(GL10.GL_POINT_SMOOTH_HINT, GL10.GL_NICEST); // Make round points, not square points 
    gl.glHint(GL10.GL_LINE_SMOOTH_HINT, GL10.GL_NICEST); // Antialias the lines 
} 

public void draw(GL10 gl){ 
    gl.glClearColor(0f, 0, 0.0f, 1.0f); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE); 
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 

    gl.glEnable(GL10.GL_TEXTURE_2D); 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, mTexture[0]); 
    gl.glFrontFace(GL10.GL_CCW); 

    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, m_TexBuffer[i]); 
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, m_VertexBuffer[i]); 
    gl.glDrawElements(GL10.GL_TRIANGLE_FAN, vertexCount, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);  

} 

です。ありがとうございました。

+0

これは重複としてマークされていても、他の質問への回答でカバーされていない、とシェーダコードを必要としませんアプローチについては、以下のsvdreeの回答を参照してください。私のコメントでは、誰かのサンプルコード(私は自分自身を試していない)のためのsvdreeのリンクに従ってください。 – ToolmakerSteve

+0

これはhttp://stackoverflow.com/questions/4934367/how-to-get-rid-of-jagged-edges-in-android-opengl-es/の複製です。そこから: "http://コード。 google.com/p/gdc2011-android-opengl/にはマルチサンプリング用のサンプルコードがあります。 – thakis

答えて

9

あなたがFSAAを行いたい場合は、有効なマルチサンプリングとEGLコンテキストを作成する必要があります。マルチサンプリング設定を返すEGLConfigChooserを書き(EGL_SAMPLE_BUFFERSに1を指定)、setEGLConfigChooserに渡します。

+0

これは、このようなチューを書くための完全なコード例のようになります。https://code.google.com/p/gdc2011-android-opengl/source/browse/trunk/src/com/example/gdc11/MultisampleConfigChooser.java?r = 2これはシェイダーを使用するthakisの提案よりはるかに簡単です(これらのシェーダーをそのまま使用することはできますが、理解する必要はないので、おそらくthakisのアプローチも使いやすいでしょう)。 – ToolmakerSteve

+0

これはリンク先と同じものへのリンクではありませんか? – thakis

関連する問題