반응형
간단하게...
- QA에서만 재현되는 버그가 있었음
- Debug/Release 모드 차이인 줄 알았었는데 아님
- 확인 결과 x64(=개발환경), x86(=배포환경) 차이
- 문제가 된 부분의 로직은 페이지를 계산하는 것
- int page = std::ceil(input / (float)10);
- 다음과 같은 시도 중 하나를 통해서 해결 가능
- ceil을 사용하지 않는 로직으로 변경
- #pragma optimize("", off)로 로직을 감쌈 (이유는 모르겠음)
- 로직 전후로 Log를 찍음 (이유는 모르겠음)
- (float)10을 (double)10으로 변경
- 하지만 문제는 4-1이었음
- http://stackoverflow.com/questions/22710272/difference-in-floating-point-arithmetics-between-x86-and-x64
- x86에서는 x87 Unit을 사용하고, x64에서는 x64 Unit을 이용해서 계산하도록 코드가 생성됨
지금 정확하게 발견된 직접적인 원인은 프로젝트 설정에서 "Floating Point Model"이 "/fp:fast"로 설정되어서였다. 이로써 5-2와 5-3이 왜 이렇게 되었는지도 명확해졌다.
반응형
'Game Dev > Article' 카테고리의 다른 글
CppCon2014 : C++ in Huge AAA Games (0) | 2016.10.08 |
---|---|
C4265 Warning을 켜자! (0) | 2016.09.22 |
함수 객체의 장점 (0) | 2014.07.24 |
VS2013에 TortiseGitBlame 연결하기 (0) | 2014.07.09 |