Opengl cpp代码在windows和mac上运行?

时间:2012-08-12 06:28:25

标签: c++ windows macos opengl if-statement

我想知道是否有可用于在mac和windows上运行opengl c ++代码的if语法。更具体地说,在代码的开头,我可以设置一个if条件来确定代码是在mac(通常是xcode)还是windows(通常是visual c ++)上运行,并相应地包含头文件。

3 个答案:

答案 0 :(得分:5)

您可以使用预处理器#ifdef

#ifdef __APPLE__
#ifdef TARGET_OS_MAC

  #include <osx.h>

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

  #include <win.h>

#endif

答案 1 :(得分:1)

您需要抽象系统界面以使用适当的方法。这可以在构建时检测到,或者您可以在OS X上安装适用于Windows构建和Xcode / Makefile项目的MSVC项目。

在Win32上,我确定你知道使用Win32 API仍然是相关的。在OS X上,Carbon正在不受支持,所以你的最小窗口系统必须使用Objective C来实现。幸运的是,这并不是很困难,一旦你有了它,你的主应用程序就可以毫无顾虑地执行了。

对于原型设计,使用为此目的而构建的框架(如SDL / GLUT / Qt等)可能更为合理。对于生产,您可以通过专门针对每个目标平台获得更好的性能和控制。

答案 2 :(得分:1)

如果你在C / C ++中使用了标准的头文件,那么你只需要使用glut来初始化OpenGL窗口并从用户那里获得键盘/鼠标事件。 GLUt将为您抽象OS层。

以下是GLUT for mac(入门)的链接

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

在上一个链接中,您将找到(OS Independent)

以下是GLUT下载链接:

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

您需要只有两个单独的项目文件myProject.xcode和myProject.vcproj才能共享所有其他文件。

注意: 应该避免使用定时器和所有其他OS相关的东西,而是应该使用GLUT给定的功能。

构建Windows / Linux / mac时,必须链接相应的GLUT。