Я хочу реализовать свертку кубической карты для IBL с использованием виджета Qt.
При реализации преобразования из карты с прямым углом в кубическую карту я столкнулся с ошибкой, которую не понимаю:
Воткак я создаю свой буфер визуализации:
QOpenGLFramebufferObjectFormat format;
format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
format.setInternalTextureFormat(GL_RGBA32F_ARB);
envTarget = new QOpenGLFramebufferObject(QSize(256, 256), format);
Вот как я создаю свою текстуру кубической карты:
envCubemap = new QOpenGLTexture(QOpenGLTexture::TargetCubeMap);
envCubemap->create();
envCubemap->bind();
envCubemap->setSize(256, 256, 4);
envCubemap->setFormat(QOpenGLTexture::RGBAFormat);
envCubemap->allocateStorage(QOpenGLTexture::RGB, QOpenGLTexture::Float32);
envCubemap->setMinMagFilters(QOpenGLTexture::Nearest, QOpenGLTexture::Linear);
Затем я перехожу к визуализации различных представлений кубической карты в соответствующие части текстуры:
envCubemap->bind(9);
glViewport(0, 0, 256, 256);
envTarget->bind();
for (unsigned int i = 0; i < 6; ++i)
{
ActiveScene->ActiveCamera->View = captureViews[i];
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 9, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
drawBackground();
}
envTarget->release();
Метод drawBackground()
рисует сферу окружения, которая отлично работает с моим буфером по умолчанию.
Ошибка openGL, которую я получаю, равна 1282. Она превращается в 0, если я закомментирую glFramebufferTexture2D
строка.1282 соответствует GL_INVALID_OPERATION
или GL_INVALID_VALUE
, где к обоим из них прикреплено несколько ошибок в соответствии с документацией glFramebufferTexture2D
.
Что я сделал не так?Я попытался перебрать каждый параметр, чтобы решить эту ошибку, но не нашел решения.Поскольку это должно быть довольно стандартным материалом, я надеюсь найти решение здесь: D Помощь?