2

複雑な非凸オブジェクトを描画するプログラムを作成しようとしています。しかし、私には問題があります-いくつかの顔は透明に見えます。追加することでこれを部​​分的に解決しました GLES20.glEnable(GLES20.GL_CULL_FACE);

しかし、その後、法線の方向が同じで、一方が他方の後ろに配置されている2つの面があると、機能しないことがわかりました。この場合、OpenGLは正しくレンダリングされません。また、私は追加しようとしました GLES20.glEnable(GLES20.GL_DEPTH_TEST)

しかし、私は目的を達成しませんでした。さらに、オブジェクトの半分が消えました。どこが間違っているのか説明してもらえますか?

PSオブジェクトの頂点を取得するために、Blenderを使用しました(データをobjファイルにエクスポートしました)。また、このデータを確認しました-頂点(CCW)の正しい順序があります。

4

1 に答える 1

1

私も同じ問題に直面しました。問題は、configAttribslistで深度とステンシルにバッファのサイズを割り当てていないことです。したがって、DepthTestを指定しても、深度は計算されません。

解決策:eglChooseConfig属性リストに次の行を追加します。EGL10.EGL_DEPTH_SIZE、8、EGL10.EGL_STENCIL_SIZE、8、これで問題が修正されました。

コード:

private static int[] s_configAttribs2 = { 
   EGL10.EGL_RED_SIZE, 4, 
   EGL10.EGL_GREEN_SIZE, 4, 
   EGL10.EGL_BLUE_SIZE, 4, 
   EGL10.EGL_DEPTH_SIZE, 8, 
   EGL10.EGL_STENCIL_SIZE, 8, 
   EGL10.EGL_SAMPLE_BUFFERS, 1,
   EGL10.EGL_RENDERABLE_TYPE, 
   EGL_OPENGL_ES2_BIT, 
   EGL10.EGL_NONE 

};

egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
于 2014-03-24T15:27:59.343 に答える