Почему делает вызов glMatrixMode (GL_PROJECTION), дают мне EXC_BAD_ACCESS в приложении для iPhone?

Просто извлеките эти числовые значения и пусть фильтр orderBy angularjs сделает всю работу за вас

JS

  $scope.getNumber = function(row){
    var value = row.title.split("-")[0];
    return parseInt(value);
  };

html [115 ]

{{item.title}}

также orderBy принимает второй параметр (true / false) для упорядочивания asc / desc

Демо

5
задан MrDatabase 4 November 2008 в 00:03
поделиться

5 ответов

Я столкнулся с этим с вызовами OpenGL, если два потока пытаются потянуть к сцене OpenGL сразу. Однако это не походит на то, что Вы делаете.

Вы правильно инициализировали свой контекст дисплея и кадровый буфер перед этим вызовом? Например, в моем подклассе UIView, который делает рисунок OpenGL, я называю следующее в его initWithCoder: метод:

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

if (!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer]) 
{
    [self release];
    return nil;
}

createFramebuffer метод похож на следующее:

- (BOOL)createFramebuffer 
{   
    glGenFramebuffersOES(1, &viewFramebuffer);
    glGenRenderbuffersOES(1, &viewRenderbuffer);

    glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);

    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);

    if (USE_DEPTH_BUFFER) {
        glGenRenderbuffersOES(1, &depthRenderbuffer);
        glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
        glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
        glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
    }

    if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) 
    {
        return NO;
    }

    return YES;
}

Это - в значительной степени шаблонный код, как сгенерировано Шаблоном приложений ES OpenGL в XCode. Возможно, не инициализируя вещи прежде, чем назвать glMatrixMode (), Вы получаете катастрофический отказ.

Кроме того, почему Вы делающий рисунок OpenGL в applicationDidFinishLaunching:? не был бы контроллер представления или представления быть более соответствующим местом для вызовов OpenGL, чем Ваш UIApplicationDelegate?

4
ответ дан 13 December 2019 в 19:38
поделиться

Я видел эту ошибку во многих различных ситуациях, но никогда конкретно в Вашем. Это обычно подходит в результате приложения, пытающегося получить доступ к памяти, которая была уже освобождена.

Можно ли подтвердить, что реагируют, все еще выделяется?

2
ответ дан 13 December 2019 в 19:38
поделиться

Необходимо заменить текущую матрицу единичной матрицей прежде, чем назвать glOrthof. Это может быть сделано с glLoadIdentity ()

1
ответ дан 13 December 2019 в 19:38
поделиться

Маловероятно, что это проблема, учитывая дату, когда вы отправили ошибку, но вы также увидите что-то подобное, если воспользуетесь примером кода Apple и запустите на устройстве с поддержкой ES 2.0, поскольку он удаляет стек матриц из спецификации, хотя определения функций останутся видимыми для компилятора, поскольку устройство также поддерживает ES 1.1.

3
ответ дан 13 December 2019 в 19:38
поделиться

Перезапустите симулятор iPhone. Эта проблема определенно связана с неправильной настройкой контекста OpenGL. Я обнаружил, что иногда в симуляторе iPhone возникают проблемы, и его необходимо перезапустить, чтобы контекст OpenGL был правильно установлен с помощью [EAGLContext setCurrentContext:].

1
ответ дан 13 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: