我按照OpenGL-tutorial.org上的每条指令,下载2.1代码,通过指定xcode的cmake运行它并使用其默认编译器。我配置直到红线消失然后点击生成。它生成的项目文件虽然在xcode中打开时显示以下错误:
/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或教程代码可能有问题吗?
答案 0 :(得分:4)
前两个错误很容易修复,也许它会解决另外两个错误。注意gl.hhaderSource中gl.h的签名。它是:
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);
第三个参数是'指向字符串指针的const指针'(缺少'const')。因此,打开LoadOGLCore.h并更改(在第214行):
const GLchar* *string
为:
const GLchar* const *string
对于有关glMultiDrawElements的其他错误,请执行相同的操作。这使我至少可以在OSX 10.8.5上构建AntTweakBar。还没有尝试过运行一个示例项目,但是当我这样做时我会更新。
答案 1 :(得分:0)
转到那些函数的定义,并用正确的(更新)参数定义
替换原型答案 2 :(得分:0)
作者在这里,
欢迎使用StackOverflow,感谢您阅读opengl-tutorial.org!
这是一个已知问题(仅限10.8,我没有)。但是,提供简单GUI的AntTweakBar仅用于最后一个教程。其他子项目应该建立得很好。为了以防万一,您可以删除CMakeLists.txt文件中的第367行到第385行,然后重新运行CMake。
我会在修复此帖子时更新。很抱歉给您带来不便!