我想訪問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. 如何訪問opengl 2屏幕渲染緩衝區的原始像素數據?
- 3. 控制檯中的屏幕緩衝區
- 4. 在Python中操作屏幕緩衝區
- 5. Opengl浮動緩衝區
- 6. OpenGL像素緩衝區直接在Linux和Mac OSX屏幕上
- 7. OpenGL - 頂點緩衝區對象沒有繪製到屏幕
- 8. OpenGL-ES 1.1 iPhone - 深度緩衝區導致洋紅色屏幕
- 9. 緩衝區的屏幕命令
- 10. Android上的OpenGL深度緩衝區
- 11. 在Windows屏幕上渲染緩衝區
- 12. 渲染到幀緩衝區和屏幕
- 13. 如何在PowerShell中查找最小屏幕緩衝區寬度?
- 14. 訪問流緩衝區HttpWebRequest
- 15. 在OpenGL中清除顏色緩衝區
- 16. 模板緩衝區在OpenGL
- 17. 來自屏幕外緩衝區的Android NDK glReadPixels()
- 18. OpenGL深度緩衝區
- 19. OpenGL統一緩衝區?
- 20. OpenGL:渲染緩衝區,深度緩衝區
- 21. Opengl選擇緩衝區
- 22. 如何寫入OpenGL深度緩衝區
- 23. OpenGL深度緩衝區問題
- 24. OpenGL:緩衝區對象性能問題
- 25. OpenGL多邊形z緩衝區問題
- 26. OpenGL繪製緩衝區問題
- 27. OpenGl:模板緩衝區問題(Wall + Window)?
- 28. OpenGL:頂點索引緩衝區問題
- 29. OpenGL ES深度緩衝區
- 30. 如何在android和opengl中使用頂點緩衝區1.1
根本不可能訪問主要的gl上下文來繪製覆蓋圖? – Emanuele 2011-05-16 19:18:58