Opengl cpp 代码可在 Windows 和 Mac 上运行



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

您可以使用预处理器#ifdef

#ifdef __APPLE__
#ifdef TARGET_OS_MAC
  #include <osx.h>
#endif
#elif defined(_WIN32) || defined(_WIN64)
  #include <win.h>
#endif

您需要抽象系统接口以使用适当的接口。这可以在构建时检测到,或者您可以在OS X上为Windows构建和Xcode/Makefile项目设置MSVC项目。

在 Win32 上,我相信您知道使用 Win32 API 仍然相关。在OS X上,Carbon正在走向不受支持,因此您的最小窗口系统必须使用Objective C实现。

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

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

这是适用于 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 和 myProject.vcproj 所有其他文件都应共享。

注意:应避免使用计时器和所有其他与操作系统相关的东西,而应使用GLUT给定的功能。

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