2013-10-01 16 views
3

我只是想在我的Mac上編譯一個開源的C++應用程序。我得到錯誤GL/gl.h文件未找到。我知道這意味着它找不到需要編譯和運行的開放GL庫。我很困惑下一步該怎麼做,因爲如何在我從Linux移植的C++項目中使用Open GL

  1. 看起來OS X包含內置的支持打開gl。有nothing下載。
  2. 好像頭文件名可能是對OpenGL的OSX和Linux( OpenGL headers for OS X & Linux)不同

所以我感到困惑的下一步該怎麼做。我是否下載OpenGL並將其鏈接到我的項目?我是否將xcode配置爲使用本地版本的OpenGL?我要更改標題嗎?

有人可以提供更多的方向。這個答案給了在Windows/Linux的答案 - 但不是OS X: How to get the GL library/headers?

+0

將'-framework OpenGL'開關添加到您的編譯命令中。 –

回答

9

蘋果認爲這是聰明的,如果他們不兼容其他人並放置在OpenGL的頭在一個名爲OpenGL不僅僅是GL目錄。所以,你必須使用

#include <OpenGL/gl.h> 
Apple系統

#include <GL/gl.h> 

其他任何地方。編譯器預定義的預處理器宏在這裏是你的朋友。

#ifdef __APPLE__ 
# include <OpenGL/gl.h> 
#else 
# include <GL/gl.h> 
#endif/*__APPLE__*/ 
+0

你忘了提到愚蠢的'-framework OpenGL'編譯器開關。過了一段時間,OS X確實在你身上成長起來,直到你被迫使用Objective C :) –

+0

@ AndonM.Coleman:嗯,那是的。我永遠不會對這些框架有什麼了不起的。圖書館有什麼問題? MacOS X是我從未完全把頭圍繞在其上的少數系統之一。是的,我可以爲它編程,我可以使用它。但我真的不能考慮它的許多設計選擇。 – datenwolf

+1

框架只是將標題,庫和相關資源打包到一個包中的一種便捷方式。它還支持同時安裝多個版本的庫以及其他便利的功能。它比傾銷所有'更清潔。將'/ usr/local/include'中的'h'文件和'.dylib'文件放入'/ usr/local/lib'中,在這裏不同的軟件包混合在一起。 – gavinb

1

「OS X包含對OpenGL的內置支持」是正確的!

Windows也行!但事情是,Windows只允許您訪問OpenGL 1.1功能......以上所有內容必須通過擴展完成! OpenGL擴展可以在這裏找到:http://www.opengl.org/registry/

但因爲它是非常枯燥的建立這些擴展,你可以使用之類的東西GLEW或類似...

另一種非常常見的問題是如何在打開OpenGL上下文Windows正常!如果你按照​​這樣的舊教程,你現在會遇到一些問題。解決方案是使用類似GLFW,glut,freeglut或類似的東西...

使用這對「上下文+擴展」,您將能夠輕鬆創建上下文並使用「現代OpenGL」函數中的任何函數您可能正在使用OS X.我特別喜歡「GLFW + GLEW」!