2011-09-01 2 views
0

다른보기의 하위보기 인보기를 그리기 위해 OpenGL을 사용하려고합니다. 이 목적을 위해 뷰 클래스를 만들었고이 클래스를 간단한 테스트 응용 프로그램에서 사용하면 잘 동작합니다. 그러나, 내 애플 리케이션의 특정 페이지에이 클래스의 인스턴스를 배치하면 OpenGL 그림 아무것도 표시되지 않습니다. 뷰를 볼 수 있는지 확신합니다 (배경색을 설정할 수 있으며,이를 표시하고 터치 이벤트를받을 수 있음). 또한 OpenGL 초기화 및 페인트 루틴을 추적 할 수 있으며 모든 것이 잘된 것처럼 보입니다. 내 페인트 루틴이 호출되고 glGetError를 자주 호출하고 오류가 반환되지 않습니다. 루틴을 작동하는 경우와 비교해 볼 수 있습니다. 모든 것이 거의 같아 보이지만 페인트는 전혀 없습니다. (단순히 창을 지우지 만 아무것도 할 수 없지만 아무것도하지 않습니다.)OpenGL iOS보기가 페인트되지 않음

작동하지 않는 앱의 코드는 여기에 게시하는 것이 훨씬 복잡합니다. 나는 내가 뭔가 잘못하고 있다고 생각하지만, 내 인생에서 나는 무엇을 알 수 없다. 아무도 나에게 왜 OpenGL 그림이 성공하고 아직 아무것도 그리지 않는 것처럼 보일지, 또는 이것을 알아내는 전략을 제안 할 수있는 아이디어를 줄 수 있습니까?

감사합니다.

답변

0

OpenGL과 외부 세계 간의 연결은 플랫폼에 따라 다르며 핵심 API의 일부가 아닙니다. 따라서 거기에있는 문제는 glGetError의 결과에 영향을 미치지 않습니다.

iOS의 경우 관련 전화는 EAGLContext -presentRenderbuffer:입니다. CAEAGLLayer에서 렌더링 버퍼를위한 저장 공간을 만들려면 renderbufferStorage:fromDrawable:을 사용해야합니다. presentRenderbuffer:의 반환 결과와 내부 GL 상태가 아닌 오류를 찾는 코드를 검사하려고합니다.

+0

감사합니다. renderbufferStorage : fromDrawable을 사용하여 저장소를 만들고 presentRenderbuffer를 호출하면 '예'가 반환됩니다. 제가 말했듯이,이 정확한 클래스는 다른 곳에서 작동하기 때문에 문제를 일으키는이 특정 뷰에서 제가 수행하고있는 것이 있습니다. 그러나 나는 그것이 무엇인지 짐작할 수 없습니다. –

+0

그런 경우에는 뷰 당 새로운 EAGLContext를 암시 적으로 생성 한 UIView 하위 클래스를 사용한 다음 리소스를 만드는 컨텍스트에 대해주의를 기울이지 않았습니까? 공유 그룹에 없으면 리소스를 이식 할 수 없습니다. – Tommy

+0

비슷한 문제가 발생했습니다. git hub의 SignatureView 라이브러리는 데모 프로젝트에서 사용되지만 광산에서는 사용되지 않습니다. 마지막으로 glColor4f를 선이 나타나기 전에 투명하지 않은 색상으로 설정해야한다는 것을 발견했습니다. 데모 프로젝트가이 색상을 설정하지 않았습니다. – Cymric