표준 렌더 - 텍스처 설정을 사용하는 플랫폼 간 코드베이스 (iOS 및 Android)가 있습니다. 각 프레임 (초기화 후), 다음과 같은 순서가 발생 텍스처 컬러 첨부 파일이있는 프레임 버퍼의렌더링 - 텍스처 및 동기화
- glBindFramebuffer는
- 안드로이드에 몇 가지 물건 기본 프레임 버퍼의
- *
- glBindFramebuffer (0 렌더링, 보통 2 iOS에서)에 결합 된 텍스처를 이용 ,369
- 렌더 제 프레임 버퍼에 컬러 부착했다 텍스처
- glBindTexture
iOS 및 일부 Android 기기 (에뮬레이터 포함)에서 정상적으로 작동하며 예상대로 작동합니다. 다른 장치 (현재 4.0.6을 실행하는 Samsung Galaxy Note 앞에 위치)에서 텍스처를 사용하는 2 단계 렌더링은 "불안정"해 보입니다. 다른 애니메이션은 "튀는"비트와 동일한 화면에서 60fps로 계속 실행됩니다. 내 결론은 대상 텍스처에 대한 변경 사항이 두 번째 렌더링 단계에서 항상 표시되는 것은 아니라는 것입니다.
이 이론을 테스트하기 위해 위의 * 표시가있는 단계에서 glFinish()를 삽입합니다. 모든 장치에서 이제는 올바른 동작을합니다. 흥미롭게도 glFlush()는 문제를 해결하지 못합니다. 하지만 glFinish()는 비싸고, 필자는 이것이 필연적 일 것이라고 제안하는 문서를 보지 못했습니다.
여기 내 질문 : 마지막 렌더링 패스에서 가장 최근에 그어진 텍스처를 사용할 수 있도록 텍스처 렌더링이 완료되면 어떻게해야합니까?
합리적인 OpenGL 동작처럼 들리지는 않습니다. 저는 ES 전문가는 아니지만, ES (최소한 스펙별로)가이 기본 동기화 동작을 변경하지 않는다고 확신합니다. 렌더링 전에 버퍼 쓰기를 끝내는 것에 의존하는 것과 같이 유지할 수 없다면 어떤 것에도 의지 할 수 없습니다. 이러한 작업에는 다른 명시적인 동기화 메커니즘이 없으므로 명령 대기열을 적절히 순차적으로 동기화해야합니다. –
그리고 나는 아무도 이것을 관찰하지 않았다? 물론 장치/빌드와 관련이 있을지도 모르겠지만 재미가 없습니다. – addaon