2013-04-07 93 views
2

我遵循OpenGL-tutorial.org上的每條指令,下載2.1代碼,通過指定xcode的cmake運行它並使用其默認編譯器。我配置,直到紅線消失,然後點擊生成。它雖然生成的項目文件,當在Xcode打開顯示以下錯誤:opengl教程xcode cmake

/OpenGL-tutorial_v0010_21/external/AntTweakBar-1.15/src/LoadOGLCore.h:149:24: Conflicting types for 'glMultiDrawElements' 

/OpenGL-tutorial_v0010_21/external/AntTweakBar-1.15/src/LoadOGLCore.h:214:24: Conflicting types for 'glShaderSource' 

/external/AntTweakBar-ObjectiveC/LoadOGLCore.mm:116:1: Cannot initialize a variable of type 'PFNglMultiDrawElements' (aka 'void (*)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)') with an lvalue of type 'void (GLenum, const GLsizei *, GLenum, const GLvoid *const *, GLsizei)': type mismatch at 4th parameter ('const GLvoid **' (aka 'const void **') vs 'const GLvoid *const *' (aka 'const void *const *')) 

/external/AntTweakBar-ObjectiveC/LoadOGLCore.mm:116:1: Cannot initialize a variable of type 'PFNglMultiDrawElements' (aka 'void (*)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)') with an lvalue of type 'void (GLenum, const GLsizei *, GLenum, const GLvoid *const *, GLsizei)': type mismatch at 4th parameter ('const GLvoid **' (aka 'const void **') vs 'const GLvoid *const *' (aka 'const void *const *')) 

我使用的Xcode 4.6.1和CMake的2.8-10

難道這是什麼毛病的cmake或教程代碼?

+1

不相關:MacOS上的OpenGL界面已經過時,所以時間越流逝,對這個特定組合的過時教程就越多。對不起:/ – scones 2013-04-07 08:51:00

+0

我一直在注意這個越來越多。找到足夠的東西甚至可以獲得基本的開始一直是一場噩夢。 :( – 2013-04-07 08:54:38

回答

0

去的那些功能的定義和更換原型正確的(更新)參數定義

0

筆者在這裏,

歡迎StackOverflow上,並感謝閱讀opengl-tutorial.org!

這是一個已知問題(僅在10.8上,我沒有)。但是,AntTweakBar提供了一個簡單的GUI,僅用於最後一個教程。其他子項目應該建立得很好。以防萬一,您可以刪除CMakeLists.txt文件中的行367至385,然後重新運行CMake。

我會在更新這個帖子的時候它會被修復。抱歉給你帶來不便 !

4

前兩個錯誤很容易修復,也許它會修復其他兩個。注意gl.h中的glShaderSource簽名。它是:

extern void glShaderSource (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); 

第三個參數是'const指針指向字符串的const指針'。

然而,請注意,在LoadOGLCore.h的簽名(膨脹宏):

extern "C" { void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar * *string, const GLint *length); 

第三個參數是「常量指針到一個字符串指針」(缺少「常量」) 。因此,開拓LoadOGLCore.h和變化(上線214):

const GLchar* *string 

到:

const GLchar* const *string 

執行相同的關於一個glMultiDrawElements其他錯誤。這使我至少可以在OSX 10.8.5上構建AntTweakBar。還沒有試圖運行一個示例項目,但我會在我更新時進行更新。