[問題] glReadPixels 前該如何更新framebuffer

看板C_and_CPP (C/C++)作者 (Excelsior)時間10年前 (2015/08/25 23:44), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Mac OSX Qt 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 問題(Question): 讓畫面強制更新後 再用glReadPixels 可正確截到圖 但是否有辦法讓OpenGL自己去做更新呢? 餵入的資料(Input): 預期的正確結果(Expected Output): 每當用glReadPixels 都可得到當下螢幕的RGB截圖 錯誤結果(Wrong Output): RGB截圖為全黑或全白 程式碼(Code):(請善用置底文網頁, 記得排版) void paintGL() { makeCurrent(); QOpenGLContext *m_context = context()->currentContext(); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glEnable(GL_TEXTURE_2D); glReadBuffer(GL_BACK); glFlush(); m_context->swapBuffers(m_context->surface()); glReadPixels(0, 0, Width, Height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, pixels); } 補充說明(Supplement): 快速的讀取主螢幕的RGB data 但不論glReadBuffer(GL_FRONT) or glReadBuffer(GL_BACK) 取出的都是glClearColor()的setting 但有試用過CGDisplayCreateImageForRect 讓畫面強制更新後 再用glReadPixels 即可正確截到圖 還請各位前輩提點 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.49.169 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440517494.A.EE0.html

08/26 01:11, , 1F
swap buffer 跟 read 順序互換?
08/26 01:11, 1F

08/28 15:54, , 2F
我試了兩天 似乎無法改變現狀呢.... 但還是謝謝
08/28 15:54, 2F

08/29 00:14, , 3F
你要不要乾脆畫到 FBO 然後 glGetTexImage2D
08/29 00:14, 3F
文章代碼(AID): #1Lt8rsxW (C_and_CPP)
文章代碼(AID): #1Lt8rsxW (C_and_CPP)