Я использую OpenTK и С#. Я выполняю рендеринг в буфер рендеринга, и мне нужно скопировать его содержимое (ColorAttachment0) в Texture2D, чтобы я мог выполнить некоторую постобработку и нарисовать его на экране. Как мне это сделать? Я бы использовал текстуру вместо буфера рендеринга, но мне нужно сгладить буфер кадра, и использование GL.RenderbufferStorageMultisample — единственный известный мне способ.
OpenGL копирует ColorAttachment0 из Renderbuffer в Texture2D
Ответы (1)
Просто создайте еще один FBO и прикрепите к нему текстуру. Привяжите мультисэмплированный FBO к GL_READ_FRAMEBUFFER, а текстурный FBO к GL_DRAW_FRAMEBUFFER. Затем вызовите glBlitFramebuffer с правильными параметрами. Это скопирует и разрешит сэмплы для создания данных без мультисэмплинга и выведет их в текстуру.
Если вы хотите разрешить образцы напрямую, вы можете использовать расширение GL_ARB_texture_multisample.
person
Dr. Snoopy
schedule
22.01.2011
Хорошо, теперь это работает с обычными фреймбуферами, но я получаю InvalidFramebufferOperationExt при использовании мультисемплового фреймбуфера. Есть ли что-то еще, что мне нужно настроить для многовыборочных буферов кадра? Мой код: pastebin.com/N2ZjCVy5
- person KobraX22; 22.01.2011
@Daniel Вы уверены, что ваши фреймбуферы заполнены? Похоже, ваша текстура глубины не мультисэмплирована (так и должно быть). Измените его на RB с тем же количеством образцов, что и цвет.
- person Dr. Snoopy; 22.01.2011
ОНО РАБОТАЕТ! (с использованием буфера рендеринга с несколькими образцами как для глубины, так и для цвета) Большое спасибо :)
- person KobraX22; 23.01.2011