2010-02-01 3 views
2

Android 앱에 iPhone 앱을 포팅하고 OpenGL 프레임 버퍼를 사용해야합니다. Nexus One이 있고 glGet (GL_EXTENSIONS) 호출을 통해 Nexus One이 iPhone과 동일한 프레임 버퍼 확장을 지원함을 알 수 있습니다. 그러나 GLSurfaceView에서 OpenGL 확장과 관련된 함수를 호출 할 수 없습니다. 간단한 프레임 버퍼 get 함수를 호출하면 UnsupportedOperationException이 발생합니다.Nexus One GL_FRAMEBUFFER_OES 확장 프로그램 ... 실제로 없나요?

이 문제를 해결할 수없는 것 같습니다. 에 개발을 계속하기 위해 프레임 버퍼가 있어야합니다. 완전 OpenGL 컨텍스트 객체를 얻기 위해 OpenGL 컨텍스트가 만들어 질 때 몇 가지 옵션을 전달해야합니까? 여기에 하드웨어의 기능을 결정하는 코드 블록이 있습니다. 그것은 확장을 지원한다고 주장하고 내 gl 객체는 GL11ExtensionPack의 인스턴스이지만, glGetFramebufferAttachmentParameterivOES에 대한 호출은 UnsupportedOperationException으로 실패합니다.

public void runEnvironmentTests() 
{ 
    String extensions = gl.glGetString(GL11.GL_EXTENSIONS); 
    Log.d("Layers Graphics", extensions); 

    if (gl instanceof GL11ExtensionPack) { 
     Log.d("Layers Graphics", "GL11 Extension Pack supported"); 

     GL11ExtensionPack g = (GL11ExtensionPack) gl; 
     int[] r = new int[1]; 
     try { 
      g.glGetFramebufferAttachmentParameterivOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES,  GL11ExtensionPack.GL_COLOR_ATTACHMENT0_OES, L11.GL_TEXTURE_2D, r, 0); 
      Log.d("Layers Graphics", "Framebuffers are supported"); 

     } catch (UnsupportedOperationException e) { 
      e.printStackTrace(); 
      framebuffersSupported = false; 
      Log.d("Layers Graphics", "Framebuffers are NOT supported"); 
     } 
    } 
} 

누구나 GL_FRAMEBUFFERS_OES 확장 프로그램을 성공적으로 사용했다면 알려 주시기 바랍니다. 나는 그것이 자바 API에서 구현되지 않을 수도 있다고 생각하기 시작했다.

+1

안녕하세요. 이전 질문으로 향하고있는 Im http://stackoverflow.com/questions/1716728/android-opengles-render-to-texture – Dullahx

답변

0

현재이 기능의 Java 버전이 구현되지 않은 Android의 버그가 있습니다. 현재이 확장 기능을 사용하는 유일한 방법은 NDK를 사용하는 것입니다.