2012-08-12 99 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。