Note "Pedantry": GL_DRAW/READ_FRAMEBUFFER were not added to the extension; they are the main features of OpenGL 3.0. Yes, technically this functionality is also displayed in ARB_framebuffer_objects, but it is an extension of the main core , and it is still the main GL 3.0.
In any case, if you want the etymology of the DRAW/READ difference, you need to look at EXT_framebuffer_blit . It was there that these counters originated, and that is why these counters exist. Instead of just specifying two FBOs for blit from / to, they created two context anchor points for the framebuffers. The glBlitFramebuffer command approaches the current bound READ_FRAMEBUFFER to the currently bound DRAW_FRAMEBUFFER .
If you are not using blit, you really don't need DRAW/READ demarcation. This does not mean that you should not use it. glReadPixels is read from READ_FRAMEBUFFER . The binding to GL_FRAMEBUFFER bound to both points, so your code can still work. But sometimes itβs useful to have an FBO binding that can be read from it that does not interfere with drawing.
source share