xcode 4.5로 업데이트 후 빌드한 바이너리 오작동

xocde 4.5로 업데이트 후 새로 빌드한 엔진 바이너리가 아이폰,아이패드 실기에서 안돌아간다.glClear()는 작동하고 화면갱신은 되는데..렌더링함수로 진입하지 않네.
운동하고 일찍 자려고 했는데 안돌아가니 빡돌아서 계속 디버깅에 매달렸다.
거지같은 xcode디버거로 힘겹게 따라가보니 뷰프러스텀 컬링에서 실패.
뷰프러스텀의 6면의 면방정식이 NaN…
뷰프러스텀 만들때 아귀먼트로 넘어오는 far값이 정상이 아니네. caller쪽에선 제대로 넣어주는데 callee쪽에서 확인하면 엉뚱한 값이다.
calling convention문제라고 추측. 함수 앞에 __stdcall선언한게 문제가 되나 싶어서 빼보니 정상작동.
arm cpu에서 __stdcall을 지원하지 않으면 그냥 무시하면 될것을..바보같은 컴파일러.
아마도 타겟 CPU가 armv6은 제외되고 armv7로 한정되면서 뭔가 바뀐것 같다.
win32에선 __stdcall을 유지하고 그 외에는 __stdcall을 무시하도록 수정했다. 그러고나니 정상작동한다.
구글검색해보니 arm calling convention은 x64 __fastcall비슷한 방식이네.
어쨌건 __stdcall지시어를 쓰면 안되는것 같군. GL ES API들이 __stdcall로 선언되어있는걸 봐서 아무생각 없이 쓴건데…
아 생각해보니 계속 vs2010으로 작업하고 나중에 xcode에서 빌드했구나. win32용 Power VR SDK니까 당연히 __stdcall로 나오는거지.
삽질했다. 그렇지만 역시 디버거가 거지같은건 애플 탓을 하고 싶네.
이거 손을 대면 댈수록 애플 플랫폼은 점점 정이 떨어져간다.
MS가 세상을 지배해줬으면 내가 이 짓거리를 안할텐데. 바보같은 녀석들.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중