Основываясь на подходе Ларса, вы можете добиться этого отслеживания ошибок автоматически, он основан на некоторой магии препроцессора и генерации заглушек.
Я написал небольшой Python-скрипт , который обрабатываетЗаголовок OpenGL (в примере я использовал Mac OS X, но он должен работать и с iOS).
Скрипт Python генерирует два файла, заголовок для включения вваш проект везде, где вы вызываете OpenGL, как этот (вы можете назвать заголовок так, как хотите):
#include "gl_debug_overwrites.h"
Заголовок содержит макросы и объявления функций после этой схемы:
#define glGenLists _gl_debug_error_glGenLists
GLuint _gl_debug_error_glGenLists(GLsizei range);
Скрипт также создает исходный файл в том же потоке, который вы должны сохранить отдельно, скомпилировать и связать с вашим проектом.
Затем все функции gl*
будут упакованы в другую функцию с префиксомс _gl_debug_error_
, который затем проверяет наличие ошибок, подобных этой:
GLuint _gl_debug_error_glGenLists(GLsizei range) {
GLuint var = glGenLists(range);
CHECK_GL_ERROR();
return var;
}