2011-12-07 9 views
2

3DモデルをXY、YZ、ZXの3つのプレーンでクリップしようとしています。私がGL11.GL_CLIP_PLANE0を使用すると動作しますが、GL11.GL_CLIP_PLANE1とGL11.GL_CLIP_PLANE2は機能しません。私が使用しているJavaコードは、以下に貼り付けられています。 Android 2.2バージョンでうまくいきましたが、2.2より上のバージョンでは動作しません。誰かが理由を知っている場合は投稿してください。androidのglClipPlanefに関するOpenGL-問題

enableSectionPlane(GL10 gl) 
{ 
    GL11 gl11 = (GL11) gl; 

    if(is_XY_plane) 
    { 

     float eqn1[] = { 0.0f, 0.0f, 1.0f,0.0f }; 
     gl.glEnable(GL11.GL_CLIP_PLANE0); 
     gl11.glClipPlanef(GL11.GL_CLIP_PLANE0, eqn1,0); 

    } 
    else 
    { 
     gl.glDisable(GL11.GL_CLIP_PLANE0); 
    } 


    if(is_YZ_plane) 
    { 
     float eqn2[] = { 1.0f, 0.0f, 0.0f,0.0f };   
     gl.glEnable(GL11.GL_CLIP_PLANE1); 
     gl11.glClipPlanef(GL11.GL_CLIP_PLANE1, eqn2,0); 
    } 
    else 
    { 
     gl.glDisable(GL11.GL_CLIP_PLANE1); 
    } 

    if(is_ZX_plane) 
    { 
     float eqn3[] = { 0.0f, 1.0f, 0.0f,0.0f }; 
     gl.glEnable(GL11.GL_CLIP_PLANE2); 
     gl11.glClipPlanef(GL11.GL_CLIP_PLANE2, eqn3,0); 
    } 
    else 
    { 
     gl.glDisable(GL11.GL_CLIP_PLANE2); 
    } 


} 
+0

どのように機能しませんか?クリッピングはまったく行われますか? – bernie

+0

GL11.GL_CLIP_PLANE0を使用した場合、つまり最初の条件(is_XY_Plane)でのみクリッピングが実行されます。条件の残りの部分はまったくクリップされません。 GL11.GL_CLIP_PLANE0をGL11.GL_CLIP_PLANE1の代わりに他の2つの条件で使用し、GL11.GL_CLIP_PLANE2をクリッピングすると、私の必要条件は3つの平面で同時にクリップすることです –

答えて

2

使用glGet()GL_MAX_CLIP_PLANESあなたのGLの実装が1つのクリップ面よりもサポートしていることを再確認します。 glGet() docsは、少なくとも6をサポートする必要があると言います。

+0

私はそれをチェックし、値を1としました。 –

関連する問題