Я пытаюсь написать 16-битную текстуру, визуализированную с помощью OpenGL, используя OpenEXR, следуя the example in page 4 from the documentation, но по какой-то причине мой код падает при выполнении file_exr.writePixels(512)
. Здесь что-то не хватает?Запись файла изображения OpenEXR 16bit в C++
Update: Я проверить, что fboId
и pboId
хорошо инициализирован и не существует никаких ошибок OpenGL до этого момента.
const Imf::Rgba * dest;
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboId);
glReadPixels(0, 0, 512, 512, GL_BGRA, GL_HALF_FLOAT_NV, 0);
dest = (const Imf::Rgba *)glMapBuffer(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY_ARB);
Imf::RgbaOutputFile file_exr("/tmp/file.exr", 512, 512, Imf::WRITE_RGBA);
file_exr.setFrameBuffer(dest, 1, 512);
file_exr.writePixels(512);
glUnmapBufferARB(GL_PIXEL_PACK_BUFFER_ARB);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
Конечно, я правильно установил 'fboId' и' pboId', и я также проверяю ошибки, когда создаю и заполняю их, хотя я должен был четко прояснить мой вопрос. Я думаю, что это, вероятно, связано с поддержкой 'GL_HALF_FLOAT_NV' ... Я дважды проверю это позже сегодня. Благодаря! – Dan