[問題] glReadPixels 前該如何更新framebuffer
開發平台(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
08/26 01:11, 1F
→
08/28 15:54, , 2F
08/28 15:54, 2F
推
08/29 00:14, , 3F
08/29 00:14, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章