2011-11-01 3 views
3

프레임 애니메이션을 실행하는 동안 특정 시간에 텍스처를로드해야하는 응용 프로그램에서 작업 중이므로 렌더링 스레드를 계속 실행해야하며 bg 스레드에서 텍스처를로드해야합니다. 안드로이드에서 이것을 할 수있는 방법이 있습니까? 나는 같은 공유 그룹을 사용했지만 안드로이드에 비슷한 기능이 있는지 확실하지 않은 다른 스레드에서 별도의 OpenGL 컨텍스트를 작성하여 iOS에서 할 수있었습니다.android opengl texture loading thread

답변

3

네, 컨텍스트간에 텍스처를 공유 할 수 있습니다 (드라이버가 지원하는 한). 그런 다음 바인딩하고 tex을 사용할 수 있습니다

glGenTextures(1, &tex); 
glBindTexture(GL_TEXTURE_2D, tex); 
glTexImage2D(...); 

: 다음 당신의 배경 상황에서이 같은 일을 한 후

eglCreateContext(display, config, rendering_context, attrs); 

:이처럼 배경로드 컨텍스트 만들기 (당신이 rendering_context와 객체를 공유하려는 의미) 렌더링 컨텍스트에서.

+0

ok 응답 주셔서 감사합니다, 안드로이드에서 OpenGL에 익숙하지 않은 eglCreateContext는 ndk 또는 java에서 호출되는 메소드입니까? 그게 내가해야 할 일이고, 문맥을 만들고 텍스처를로드 한 다음 스레드를 죽이는 것입니까? 감사합니다 – marchinram

+0

eglCreateContext()는 C/C++에서 컨텍스트를 만드는 방법입니다. Java에 관해서는 말할 수 없지만 비슷한 점이있을 것입니다. 따라서 공유 컨텍스트에 대한 렌더링 컨텍스트를 전달하여 컨텍스트를 만드는 것뿐입니다. 그런 다음 텍스처를 만들기 시작하면 동일한 GLuint를 사용하여 렌더링 컨텍스트에서 텍스처를 사용할 수 있습니다. – Chris