glewInit()
должен вызываться после того, как контекст OpenGL становится актуальным, после glfwMakeContextCurrent
.
Но он должен вызываться перед любой инструкцией OpenGL. См. Также Инициализация GLEW :
// [...]
/* Make the window's context current */
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK)
printf("Error\n");
float pos[6] = {
-0.5f, -0.5f,
0.0f, 0.5f,
0.5f, -0.5f
};
GLuint buf;
glGenBuffers(1, &buf);
glBindBuffer(GL_ARRAY_BUFFER, buf);
glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(float), pos, GL_STATIC_DRAW);
// [...]
Обратите внимание, что инструкции, подобные glGenBuffers
, являются функциональными указателями. Эти указатели инициализированы в NULL
. glewInit()
присваивает адрес функции этим указателям.
Когда вы пытаетесь вызвать функцию перед инициализацией, это вызывает:
Нарушение прав доступа, местоположение выполнения 0x00000000
blockquote>
Эта Статья говорит очень кратко об этом.
В основном это указывает, что можно посмотреть в файлах Xib для выяснения немного более быстро, какую привязку Вы установили в своем приложении.
Надежда, которая помогает!
Я не уверен, что существует способ получить сводку привязки и атрибутов, кроме которых у Вас есть установка в Интерфейсном Разработчике сама. Насколько я знаю, что это - единственный gui, который показывает эту информацию. Можно попытаться запустить приложение в отладчике и повредиться на исключениях (-[Повышение NSException]), чтобы видеть, можно ли, по крайней мере, разыскать, какой объект дает Вам эту ошибку, которая могла бы помочь Вам определить местоположение плохого соединения в IB.
Если бы Ваше приложение является достаточно небольшим и создает быстро, и Вы только начинаете использовать IB и привязку, я предложил бы, чтобы Вы установили одну связь и протестировали ее, чтобы видеть, работает ли она, и затем идите дальше к следующему. Тем путем Вы будете знать, какое соединение или атрибут вызывают проблемы.
Я надеюсь, что у кого-то есть лучший ответ, чем это, но насколько я знаю, что нет инструмента, чтобы проверить и точно определить проблемы соединения IB.
Что, если Вы делаете привязку программно вместо того, чтобы делать его в interfacebuilder?
Чтобы сделать это, необходимо использовать этот метод NSObject:
- (void)bind:(NSString *)binding toObject:(id)observableController withKeyPath:(NSString *)keyPath options:(NSDictionary *)options
Одна вещь, которую я не заметил сначала, состояла в том, что при рассмотрении инспектора соединений для объекта он показывает хороший список всего, что он связывается с, и если Вы нависаете над объектом, он выделяет свой соответствующий элемент.
Это хорошо для того, когда Вы связали что-то со Столбцом таблицы все снова и снова.
На сайте Apple's Dev Site есть замечательная статья об устранении неполадок.
Ключ на вынос? Есть настройка под названием NSBindingDebugLogLevel
, которую можно использовать для получения отладочной информации.
Два способа установки:
1 - Постоянно в настройках по умолчанию
по умолчанию пишите com.yourdomain.yourapplication NSBindingDebugLogLevel 1
2 - Передавайте его в качестве параметра при отладке
path/to/your/app -NSBindingDebugLogLevel 1