2012-08-12 75 views
0

我想知道是否有任何可用於在Mac和Windows上運行opengl C++代碼的語法。更具體地說,在代碼的開始處,我可以放置一個if條件來確定代碼是在mac(通常是xcode)還是windows(通常是visual C++)上運行,並相應地包含頭文件。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 2012-08-12 09:18:59

1

您需要抽象您的系統接口以使用適當的東西。這可以在構建時檢測到,或者可以在OS X上安裝適用於Windows版本和Xcode/Makefile項目的MSVC項目。

在Win32上,我相信你知道使用Win32 API仍然是相關。在OS X上,Carbon正在向不受支持的方向發展,因此您最小的窗口系統必須使用Objective C來實現。幸運的是,這並不是非常困難,一旦您擁有了它,主應用程序就可以執行而不用擔心了。

對於原型設計,使用像SDL/GLUT/Qt等設計的框架可能會更理想。對於生產,您將獲得更好的性能和控制,專門針對每個目標平臺。

1

如果您在C/C++中使用標準頭文件,那麼您只需要使用glut來初始化OpenGL窗口並獲取用戶的鍵盤/鼠標事件。 GLUt會爲您抽象OS層。

下面是MAC(入門)在一個鏈接的鏈接,GLUT

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

你會發現(與操作系統無關)

這裏是GLUT下載鏈接:

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

您將需要只有兩個單獨的項目文件myProject.xcode和我的Project.vcproj所有其他文件應該共享。

注意: 應該避免使用定時器和所有其他操作系統相關的東西,而應該使用GLUT給定的功能。

當爲windows/Linux/mac構建時,您將不得不鏈接相應的GLUT。