2014-10-14 5 views
0

삼성 갤럭시 탭 3 (Android 4.2.2)을 가지고 있는데 깊이 버퍼가 작동하지 않는 것 같습니다. 다른 장치는 정상입니다. 다음과 같이 나는 상황을 만들 :Vivante GPU (Android)의 OpenGL ES 2 : 깊이 버퍼가 작동하지 않습니다.

setEGLContextClientVersion(2); 
setEGLConfigChooser(new MultisampleConfigChooser(...)); 

// ... 

@Override 
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { 
    mValue = new int[1]; 

    // Try to find a normal multisample configuration first. 
    int[] configSpec = { 
      EGL10.EGL_RED_SIZE, 5, 
      EGL10.EGL_GREEN_SIZE, 6, 
      EGL10.EGL_BLUE_SIZE, 5, 
      EGL10.EGL_DEPTH_SIZE, 16, 
      // Requires that setEGLContextClientVersion(2) is called on the view. 
      EGL10.EGL_RENDERABLE_TYPE, 4 /* EGL_OPENGL_ES2_BIT */, 
      EGL10.EGL_SAMPLE_BUFFERS, (!mDisableMultisampling ? 1 : 0)/* true */, 
      EGL10.EGL_SAMPLES, (!mDisableMultisampling ? 2 : 0), 
      EGL10.EGL_STENCIL_SIZE, 8, 
      EGL10.EGL_NONE 
    }; 

    if (!egl.eglChooseConfig(display, configSpec, null, 0, mValue)) { 
     // ... 
    } 

    ... 
} 

나는 다음과 같은 일을 시도 :

  • 비활성화 멀티 샘플링 (효과 없음)
  • 사용하는 24 비트 깊이 (효과 없음)
  • glGet (GL_DEPTH_BITS) = 16
  • glIsEnabled (GL_DEPTH_TEST)가 true
  • glGet (GL_DEPTH_FUNC) = GL_LESS
  • =을
  • glGet (GL_DEPTH_WRITEMASK) = 1
  • glGetString (GL_RENDERER)는 gc1000 코어를

프로젝션 매트릭스 = (프로그램 iOS에서뿐만 아니라, 다른 안드로이드 장치에서 작동하는) OK이다.

무엇이 문제를 일으킬 수 있습니까?

+0

어떤 구성이 반환합니까? 정말 버퍼가 있습니까? 또한,'EGL_SAMPLE_BUFFERS' 및'EGL_SAMPLES'를 사용하지 않고 설정을 요청 했습니까? – keaukraine

+0

시도했다, 그것은 아무런 영향을 미치지 않았다 :(얼마나 깊이 버퍼가 있는지 확인할 수 있습니까? – Asylum

답변

1

"사용자 오류." 외관상으로는 glDepthMask은 Vivante를 제외한 모든 GPU에서 1보다 큰 값을 허용합니다. 이것을 찾아서 0 또는 1로 강제하여 문제를 해결했습니다.

0

많은 사람들이 Samsung 장치 용 OpenGL ES 드라이버에 문제가 있습니다. 그들은 버그가 있습니다. 드라이버 업데이트를받을 수 있는지 확인하십시오.