2012-08-12 3 views
0

Mac과 Windows 모두에서 OpenGL C++ 코드를 실행하는 데 사용할 수있는 if 구문이 있는지 알고 싶습니다. 더 구체적으로, 코드 시작시 코드가 Mac (일반적으로 xcode) 또는 Windows (일반적으로 Visual C++)에서 실행되는지 여부를 결정하는 if 조건을 넣을 수 있으므로 그에 따라 헤더 파일을 포함 할 수 있습니다.OpenGL cpp 코드가 Windows와 Mac에서 모두 실행됩니까?

답변

5

사전 처리기 #ifdef을 사용할 수 있습니다.

#ifdef __APPLE__ 
#ifdef TARGET_OS_MAC 

    #include <osx.h> 

#endif 
#elif defined(_WIN32) || defined(_WIN64) 

    #include <win.h> 

#endif 
+0

내가 필요한 것. 감사합니다! – nitinsh99

1

적합한 것을 사용하려면 시스템 인터페이스를 추상화해야합니다. 이것은 빌드 타임에 발견 될 수 있습니다. 또는 Windows 빌드와 Xcode/Makefile 프로젝트가 OS X의 적절한 위치에 설치되어있을 수 있습니다.

Win32에서 Win32 API를 사용하는 것이 관련된. OS X에서는 Carbon이 지원되지 않으므로 Objective C를 사용하여 최소한의 윈도우 시스템을 구현해야합니다. 운좋게도이 작업은 그리 어렵지 않으며 일단 구현하면 주 응용 프로그램이 걱정없이 실행할 수 있습니다.

프로토 타이핑의 경우 SDL/GLUT/Qt 등을 염두에두고 제작 된 프레임 워크를 사용하는 것이 더 건강 할 수도 있습니다. 프로덕션에서는 각 대상 플랫폼을 전문으로하여 더 나은 성능과 제어를 얻게됩니다.

1

C/C++에서 표준 헤더 파일을 사용한 경우 glut을 사용하여 OpenGL 창을 초기화하고 사용자로부터 키보드/마우스 이벤트를 가져 오기만하면됩니다. GLUT는 OS 레이어를 추상화합니다.

: 여기

는 GLUT 다운로드 링크는 (OS 독립를) 찾을 수 이전 링크의 맥 (시작)에 대한 GLUT에 대한 링크

http://developer.apple.com/library/mac/#samplecode/glut/Introduction/Intro.html

여기

입니다

http://www.opengl.org/resources/libraries/glut/glut_downloads.php

두 개의 프로젝트 파일 myProject.xcode와 my Project.vcproj 다른 모든 파일은 공유해야합니다.

참고 : 타이머 및 기타 모든 OS 관련 항목은 피해야하며 대신 GLUT 기능을 사용해야합니다.

Windows/Linux/mac 용으로 빌드 할 때 적절한 GLUT에 연결해야합니다.

관련 문제