2013-04-07 5 views
2

Я следил за каждой инструкцией на OpenGL-tutorial.org, загружая код 2.1, запуская его через cmake, определяя xcode и используя его компиляторы по умолчанию. Я сконфигурировал до тех пор, пока красные линии не исчезли, а затем нажмите сгенерированный. Файл проекта генерируется, хотя, при открытии в Xcode отображаются следующие ошибки:opengl tutorial 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

Несвязанный: интерфейс OpenGL на MacOS устарел, поэтому чем больше времени прошло, тем больше вы найдете устаревшие учебники для этой конкретной комбинации. извините:/ – scones

+0

Я все это замечал. Это был кошмар, чтобы найти что-то достаточно важное, чтобы получить даже базовый старт. :( –

ответ

0

перейти к определению этих функций и заменить прототип с правильными определениями (обновление) параметров

0

Автор здесь,

Добро пожаловать на StackOverflow, и спасибо за чтение opengl-tutorial.org!

Это известная проблема (только для 10.8, которой у меня нет). Однако AntTweakBar, который предоставляет простой графический интерфейс, используется только для самого последнего урока. Другие подпроекты должны строиться просто отлично. На всякий случай вы можете удалить строки с 367 по 385 в файле CMakeLists.txt и перезапустить CMake.

Я обновлю это сообщение, когда оно будет исправлено. Приносим извинения за неудобства !

4

Первые две ошибки достаточно легкие, чтобы исправить, возможно, это исправит два других. Обратите внимание на подпись в gl.h для glShaderSource. Это:

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

Третий параметр - это константный указатель на указатель 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. Это позволило мне хотя бы построить AntTweakBar на OSX 10.8.5. Все еще не пытались запустить образец проекта, но я обновлю, когда я это сделаю.