У меня есть EXC_BAD_ACCESS
в последней строке этого кода (этот код обжигают несколько раз в секунду), но я не могу понять, в чем проблема:EXC_BAD_ACCESS с glTexImage2D в GLKViewController
[EAGLContext setCurrentContext:_context];
glActiveTexture(GL_TEXTURE0);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, _backgroundTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _outputFrame.cols, _outputFrame.rows, 0, GL_BGRA, GL_UNSIGNED_BYTE, _outputFrame.data);
При отладке я убедитесь, что текстура создана (id> 0), выходной кадр имеет действительный указатель на данные и представляет собой 4-канальную матрицу. Я внутри метода drawRect
GLKViewController. Я думаю, мне не нужно было привязывать фреймбуфер, так как это одна из вещей, которые автоматизированы здесь. Это не сбой при первом кадре, а несколько десятков кадров позже.
Может ли кто-нибудь обнаружить проблему?
UPDATE:
Кажется, это из-за состояния гонки на _outputFrame
, она обновляется в то же время читать glTexImage2D
. Я попытаюсь заблокировать его для чтения, а затем отчитаюсь.
Было бы неплохо, если бы вы могли опубликовать свое решение, чтобы другие могли извлечь выгоду из него, если у них возникнет аналогичная проблема. – Unheilig
Я разместил его, но не знаю, может ли он быть полезным кому угодно, поскольку он очень специфичен ... – aledalgrande