Подтвердить что ты не робот

GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT при попытке прикрепления текстуры

Я получаю сообщение об ошибке GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT после того, как я попытаюсь создать фреймбуфер, который отображает текстуру. Я не могу понять, что не так, любая помощь очень ценится.

Изменить: Исправлено! Рабочий код:

    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 768, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
    glBindTexture(GL_TEXTURE_2D, 0);

    glGenRenderbuffers(1, &rboID);
    glBindRenderbuffer(GL_RENDERBUFFER, rboID);
    glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 768, 1024);
    glBindRenderbuffer(GL_RENDERBUFFER, 0);

    glGenFramebuffers(1, &backFramebuffer);
    glBindFramebuffer(GL_FRAMEBUFFER, backFramebuffer);
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboID);
    [self checkFramebufferStatus];
    glBindFramebuffer(GL_FRAMEBUFFER, 0);

Примечание. Если ваша версия не работает, убедитесь, что вы проверяете ошибки после каждого вызова и что вы очищаете ошибку до вашего первого вызова, иначе вы будете проверять код перед этим.

4b9b3361

Ответ 1

Вероятно, что текстура неполна. По умолчанию MIN_FILTER для текстуры задает mipmapping, но вы предоставили только для уровня текстуры 0, поэтому сама текстура является неполной.

Добавьте вызовы в glTexParamter, чтобы установить MIN_FILTER в один из непиговых режимов.