педантичное примечание: GL_DRAW/READ_FRAMEBUFFER
не были введены в расширение;они являются основной функциональностью OpenGL 3.0.Да, технически эта функциональность также представлена в ARB_framebuffer_objects, но это расширение ядра , и оно все еще является ядром GL 3.0.
В любом случае, если вы хотите этимологию DRAW/READ
различие, вам нужно посмотреть EXT_framebuffer_blit .Вот откуда появились эти перечислители, и именно поэтому эти перечислители существуют.Вместо того, чтобы просто указывать два FBO для перенаправления из / в, они создали две точки привязки контекста для кадровых буферов.Команда glBlitFramebuffer
переходит от текущей привязки READ_FRAMEBUFFER
к текущей привязке DRAW_FRAMEBUFFER
.
Если вы не используете blit, тогда вам действительно не нужно необходимость DRAW/READ
различие.Это не значит, что вы не должны использовать его, однако.glReadPixels
читает из READ_FRAMEBUFFER
.Привязка к GL_FRAMEBUFFER
привязывает обе точки, поэтому ваш код все еще может работать.Но иногда полезно иметь привязку FBO, из которой можно прочитать, что не мешает операциям рисования.