我想訪問Android中的主要(OpenGL)屏幕來實現一些覆蓋3D效果。 是否可以這樣做?
如果是,我該怎麼辦?
在修改此上下文時,我的應用程序應該是一項服務,對不對?
如何訪問Android中的主屏幕/ OpenGL緩衝區?
0
A
回答
4
出於明顯的安全原因,您無法訪問幀緩衝區。
3
你可能想要做的是研究glReadPixels()函數。我運行了一個測試,我用glsurfaceview和image view分割了屏幕,並想看看我是否可以從glview中獲取像素並創建一個Bitmap,然後將其應用於ImageView。經過一番研究,我發現使用glReadPixels()的作品,但你必須在使用它們作爲android位圖之前變換像素。這是我最終使用的方法。我相信我在另一個論壇上發現了這種方式。
public Bitmap SaveGLPixels(int x, int y, int w, int h, GL10 gl)
{
int b[]=new int[w*h];
int bt[]=new int[w*h];
IntBuffer ib=IntBuffer.wrap(b);
ib.position(0);
gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for(int i=0; i<h; i++)
{//remember, that OpenGL bitmap is incompatible with Android bitmap
//and so, some correction need.
for(int j=0; j<w; j++)
{
int pix=b[i*w+j];
int pb=(pix>>16)&0xff;
int pr=(pix<<16)&0x00ff0000;
int pix1=(pix&0xff00ff00) | pr | pb;
bt[(h-i-1)*w+j]=pix1;
}
}
Bitmap.Config bconfig = Bitmap.Config.RGB_565;
Bitmap sb=Bitmap.createBitmap(bt, w, h, bconfig);
return sb;
}
相關問題
- 1. 訪問緩衝區在OpenGL
- 2. 控制檯中的屏幕緩衝區
- 3. 屏幕捕獲後無法訪問緩衝區數據
- 4. OpenGL - 使用幀緩衝區和Oculus Rift的空白屏幕
- 5. 在Python中操作屏幕緩衝區
- 6. Opengl浮動緩衝區
- 7. 如何同步多線程OpenGL緩衝區訪問?
- 8. OpenGL-ES 1.1 iPhone - 深度緩衝區導致洋紅色屏幕
- 9. Java OpenGL將屏幕外緩衝區繪製爲圖像
- 10. OpenGL像素緩衝區直接在Linux和Mac OSX屏幕上
- 11. OpenGL到DirectX(緩衝區到紋理到屏幕)
- 12. OpenGL - 頂點緩衝區對象沒有繪製到屏幕
- 13. 緩衝區的屏幕命令
- 14. Android上的OpenGL深度緩衝區
- 15. 如何渲染到幀緩衝區而不在屏幕上用OpenGL顯示?
- 16. 在Windows屏幕上渲染緩衝區
- 17. 渲染到幀緩衝區和屏幕
- 18. OpenGL的緩衝區如何工作?
- 19. OpenGL ES中的深度緩衝區問題Android
- 20. 訪問流緩衝區HttpWebRequest
- 21. 如何在PowerShell中查找最小屏幕緩衝區寬度?
- 22. OpenGL的 - 緩衝區,着色
- 23. 在OpenGL中清除顏色緩衝區
- 24. 模板緩衝區在OpenGL
- 25. Android OpenGL OutOfMemory(分配緩衝區)
- 26. OpenGL深度緩衝區
- 27. OpenGL統一緩衝區?
- 28. OpenGL:渲染緩衝區,深度緩衝區
- 29. Opengl選擇緩衝區
- 30. 來自屏幕外緩衝區的Android NDK glReadPixels()
根本不可能訪問主要的gl上下文來繪製覆蓋圖? – Emanuele 2011-05-16 19:18:58