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