在我的程序中我使用的是Qt的功能:qApp->primaryScreen()->grabWindow(qApp->desktop()->winId(),x_offset,y_offset,w,h);
截圖截圖:native API vs opengl
1
A
回答
0
glReadPixels(閃光X, 閃爍Y, GLsizei寬度, GLsizei高度, GLenum格式, GLenum類型, GLvoid * data)將從位置數據開始將一塊像素塊讀入客戶端內存中。
1
爲了擴展@ Zhenyi Luo的回答,這裏是我過去使用的代碼片段。
它還使用FreeImage導出屏幕截圖。
void Display::SaveScreenShot (std::string FilePath, SCREENSHOT_FORMAT Format){
// Create Pixel Array
GLubyte* pixels = new GLubyte [3 * Window::width * Window::height];
// Read Pixels From Screen And Buffer Into Array
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glReadPixels (0, 0, Window::width, Window::height, GL_BGR, GL_UNSIGNED_BYTE, pixels);
// Convert To FreeImage And Save
FIBITMAP* image = FreeImage_ConvertFromRawBits (pixels, Window::width,
Window::height, 3 * Window::width, 24,
0x0000FF, 0xFF0000, 0x00FF00, false);
FreeImage_Save ((FREE_IMAGE_FORMAT) Format, image, FilePath.c_str(), 0);
// Free Resources
FreeImage_Unload (image);
delete [] (pixels);
}
+0
嘗試你的解決方案 - 下載freeimage,安裝,複製/粘貼代碼。這與之前的消息一樣 - 只有零。也許我應該提醒一下:我需要從桌面讀取像素,如「打印屏幕」按鈕。或者,也許我不知道一些功能如何使用它) – 2015-02-07 21:03:41
相關問題
- 1. Android OpenGL截圖
- 2. OpenGL截圖Android
- 3. OpenGL中的BMP截圖
- 4. 使用opengl v2截圖android
- 5. OpenGL/Direct3D第三方應用截圖截圖
- 6. 截圖截圖和顯示
- 7. .NET api文檔截圖?
- 8. JOGL截圖
- 9. 用C使用OpenGL截取屏幕截圖#
- 10. 截圖而不是OpenGL輸出
- 11. SDL OpenGL截圖是黑色的
- 12. 如何採取遊戲截圖用OpenGL
- 13. 在OpenGL創建截圖不工作
- 14. 截圖使用openGL和/或X11
- 15. C++截取屏幕截圖
- 16. 截取iFrame的截圖
- 17. 截取屏幕截圖
- 18. iOS截取tableview的截圖
- 19. 如何截取android截圖
- 20. IE BHO截圖
- 21. 顯示截圖後的截圖
- 22. SpriteKit屏幕截圖的屏幕截圖
- 23. 包含BaloonTip的截圖截圖
- 24. 截取Android OpenGL
- 25. 截圖的圖像
- 26. 截圖在ViewPager
- 27. 延遲截圖
- 28. android截圖?
- 29. C \ GTK截圖
- 30. jscrollpane gallery截圖
謝謝你的回覆!我tryed使用它,但我不知道我做對了:'unsigned char pixels [4] = {0}; glReadPixels(0,0,500,500,GL_RGB,GL_UNSIGNED_INT,pixels);'。但是我總是看到'glReadPixels'後面的像素由零填充。 'glGetError'返回0. – 2015-02-07 00:06:28
你只能通過分配一個大小爲4的像素來讀取一個像素,但是你的輸入是500 * 500像素,你通過glReadPixels得到了什麼(0,0,1,1,GL_RGB,GL_UNSIGNED_INT,像素); – 2015-02-07 00:46:17
已編輯!所以,現在我仍然只取零。 – 2015-02-07 01:23:43