Не в состоянии создать мультисэмплерный кадровый буфер - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь скопировать пользовательский кадровый буфер размером 1920 X 1080 в буфер кадров по умолчанию размером 800 X 600.

Окно создается со следующими параметрами

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_FLOATING , GLFW_TRUE);  
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
   glfwWindowHint(GLFW_SAMPLES, 4);
GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "Renderer", nullptr, nullptr);   // Create the render window
glEnable(GL_MULTISAMPLE);
glEnable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Сначала создать объект текстуры.

// create a texture object
    glGenTextures(1, &textureMsaaId);
    glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, textureMsaaId);
    glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGBA8, 1920, 1080, false);
    glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0);

Создать буфер кадра

     glGenFramebuffers(1, &fboMsaaId);
     glBindFramebuffer(GL_FRAMEBUFFER, fboMsaaId);
    // create a 4x MSAA renderbuffer object for depthbuffer
    glGenRenderbuffers(1, &rboDepthId);
    glBindRenderbuffer(GL_RENDERBUFFER, rboDepthId);
    glRenderbufferStorageMultisample(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 4, 1920, 1080);

    // attach msaa  Texture and RBO to FBO attachment points
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, textureMsaaId, 0);  
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboDepthId);
    GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
    if (status == GL_FRAMEBUFFER_COMPLETE)
        qDebug() << "Frame buffer Completed";
    else
        qDebug() << "Frame buffer NOT Completed";

    glBindFramebuffer(GL_FRAMEBUFFER, 0);

Я получаю сообщение об ошибке, что буфер кадра не завершен.

Ошибка GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, которая вызвано из-за вложения буфера рендеринга.

...