2011-09-20 7 views
1

저는 코드와 개발자 비디오를보고 OpenGL ES 2.0/GLSL 및 관련 iOS 단점을 배웠으며 비동기 셰이더 컴파일에 대해서는 언급하지 않았습니다. 강사, 작가 또는 세일즈맨 (예 : 엔지니어)을 제외하고 사례에 복잡성을 추가하는 것에 대한 걱정은 그 이유입니까? 예를 들어배경 스레드에서 쉐이더를 컴파일하지 않는 이유는 무엇입니까?

, 대부분의 웹 데이터 검색 자습서 홈 망치 체조의 일종을 수행하기위한 필요 왜 응용 프로그램을 차단하는 것이 주 스레드 - 차단을 막기 위해 (pthreads 정보는 NSOperation, GCD는, 비동기 인스턴스 메소드에 등을 구운) 발사는 받아 들일 만하다고 생각 하는가?

답변

1

EAGLContext 두 개를 동기화하는 것이 약간 까다로울 수 있습니다. 일반적으로 모든 종류의 자산, 텍스처, 쉐이더 등을 백그라운드에서로드하는 것에 대해서는 아무것도 없습니다.

아마 진짜 이유는 대부분의 사람들은 OpenGL (ES)을 하나의 단일 스레드에서만 작동하는 무언가 또는 OpenGL (ES)을 백그라운드 스레드에서로드 할 가치가있는 로딩 시간에 문제가 없었거나 그냥 신경 쓰지 마라.

마지막 질문에 : 네트워킹은 거대한 잠재 성을 추가 할 수 있으며 "할 수있다"는 뜻은 "뜻"입니다. 리소스 로딩은 네트워크 액세스에 비해 문제가되지 않습니다. 셰이더 또는 텍스처를로드하는 데는 시간이 덜 걸리고 이미 알려진 경우 미리 정상적인 경우에 얼마나 걸릴지 미리 알 수 있습니다. 또한 사람들은 게임에서 화면을로드하는 데 익숙하지만, 테이블 뷰를 스크롤 할 때 화면로드를보고 싶지 않아 응용 프로그램이 응답하지 않는 서버에서 그림을 가져올 수 있습니다.

+0

답장을 바꾸어 말하면 다음과 같습니다. 1) 불가능하지 않고 어렵습니다. 2) 지연으로 인해 사용자가 충분히 가치 있다고 생각하지 않을 수 있습니다. 의견을 보내 주셔서 감사합니다! – user396030

+0

@ Mr.Pleasant - 여기서는 몇 가지 구체적인 수치를 위해 9 개의 쉐이더 프로그램이 iPad 1에서 컴파일하는 데 총 200 밀리 초가 걸리고 컴파일 없이는 아무 것도 표시 할 수 없다고 생각합니다. 배경 스레드. 내 실제 OpenGL ES 렌더링은 GCD 직렬 디스패치 대기열을 사용하여 백그라운드에서 수행되며 멀티 코어 iPad 2 및 iPhone 4S에서 성능이 향상됩니다. –

+0

이것이 오래된 스레드라는 것을 알고 있습니다. 아무도 그것을 할 수 없었습니까? – Burf2000

관련 문제