2012-12-03 4 views
2

복잡한 비 convex 객체를 그리는 프로그램을 작성하려고합니다. 하지만 문제가 있습니다. 일부 얼굴이 투명 해 보입니다. 나는 이것을 부분적으로 추가하여 덧붙였다. GLES20.glEnable(GLES20.GL_CULL_FACE);Android OpenGL ES가 compex 객체를 잘못 렌더링합니다.

그러나 그 후에는 법선의 방향이 같은 두면과 다른면 뒤에있는면이 있다는 것을 알았다. 이 경우 OpenGL 렌더링이 잘못 렌더링됩니다. 또한 추가하려고했습니다. GLES20.glEnable(GLES20.GL_DEPTH_TEST)

하지만 목표를 달성하지 못했습니다. 또한, 물건의 절반이 사라졌습니다. 당신이 설명해 주시겠습니까, 어디서 잘못 됐습니까?

P. 객체 정점을 얻으려면 Blender를 사용했습니다 (데이터를 obj 파일로 내 보냈습니다). 또한이 데이터를 확인했습니다 - 올바른 정점 순서 (CCW)가 있습니다.

+0

당신은 스크린 샷을 업로드 할 수 있습니다 어디 있습니까? 그런 다음 적절한 권한을 가진 사람이 귀하의 질문을 편집 할 수 있습니다. – Tommy

답변

1

나는 똑같은 문제에 직면했다. 문제는 configAttribslist에 깊이와 스텐실을위한 버퍼 크기를 할당하지 않는다는 것입니다. 따라서 DepthTest를 지정할 때도 깊이를 계산하지 않습니다.

해결 방법 : eglChooseConfig attribs list에 다음 줄을 추가하십시오. 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); 
관련 문제