2
OpenGL ES 1.1은 약간 잘못되었을 경우 내 iPhone 프로그램을 중단시키는 것을 좋아합니다.OpenGL ES 충돌을 디버깅하는 방법은 무엇입니까?
일반적으로 glDrawArrays의 어딘가에서 스택에 여러 glDestroyContext 호출이 발생합니다.
보통 나는 사방에{
GLint iErr = glGetError();
if (iErr != GL_NO_ERROR)
{
NSLog(@"GL error: %d (0x%x)", iErr, iErr);
}
}
를 삽입하여 문제를 양분하고있다.
그러나 때로는 충분하지 않습니다. 충돌 이유로 유용한 진단을받을 수있는 다른 방법이 있습니까?
추가 콘솔 메시지가 없습니다 (즉, 크래시 유형을 제외하고 일반적으로 액세스가 잘못됨). 일반적으로 잘못된 입력 데이터이거나 일부 상태를 사용하지 않도록 설정 한 것입니다. 그러나 무엇이 잘못되었는지를 찾는 데는 시간이 걸립니다. 보통 이진 검색에 의존해야합니다. : ( –
당신이 버퍼보다 많은 삼각형을 그리려는 것이 아닌지 확인하고 싶습니다. OpenGL이 그렇지 않아야하는 메모리에 들어가는 것처럼 들리 겠지만, 이것은 아마도 여러분이 꼭지점이 당신은 정말로 버퍼에 있습니다. –