我需要將一些像素着色器應用到位圖(使用OpenGL)並將結果發送到服務器。渲染應該在後臺進行,所以我無法爲此創建GLSurfaceView。所以我的問題是:是否可以在不使用GLSurfaceView的情況下在Android上進行OpenGL渲染?像直接渲染到位圖,或畫布或某種緩衝區/數組?或者可以通過它可以使用某種虛擬GLSurfaceView?OpenGl直接渲染位圖(沒有任何視圖)
回答
This SO post包含一個鏈接到an anddev post樣本。有點向下,有人創建了一個PixelBuffer
類,重用了GLSurfaceView.Renderer
接口,但除此之外,只有EGL。
幸運的是,我剛剛完成了基於相同想法的自己的渲染器。謝謝你的答案和鏈接思想。它對其他人可能有用。 – 2012-03-23 07:38:37
提到的PixelBuffer對象確實包含了一個很好的概念證明,但它存在一個嚴重的性能問題:一旦緩衝區被渲染,位圖的第二個副本就會通過在一個循環中複製每個像素而產生100%或更多運行時增加!只是表明將參考框架保持在OGL中是很重要的。 – tomwhipple 2012-06-21 00:56:25
另外,PixelBuffer可以在一些手機上工作,但不能用於其他手機。耶破碎! – tomwhipple 2012-06-21 01:23:32
聽起來你想渲染到幀緩衝區對象(即直接渲染到紋理)。這絕對有可能。只需在這裏或網絡上搜索答案即可。我發現這一個沒有太努力。我不確定您是否使用GL ES 1.1或2.0。
http://blog.shayanjaved.com/2011/05/13/android-opengl-es-2-0-render-to-texture/
它也像在SDK APIDemos有1.1
謝謝你的答案。正如我所看到的,這兩種方法都依賴於GLSurfaceView。我需要我的渲染沒有任何屏幕/活動/佈局可用。我的意思是在一些後臺線程。我不知道GLSurfaceView是否能夠創建GL上下文而不能初始化它的表面(因爲它需要一個屏幕來繪製)。無論如何,謝謝你的提示,這似乎是有用的。 – 2012-03-21 15:18:33
@boulder是否GLSurfaceView不初始化,如果它離開屏幕?如果在屏幕上顯示1px,該怎麼辦? – 2014-03-02 22:12:11
@BradMoore我現在不記得了。你可以很容易地檢查這個。據我記得,沒有屏幕就不能使用GLSurfaceView。 1px不是一個選項,因爲渲染應該在服務上完成。 – 2014-03-04 13:05:12
- 1. OpenGL FreeType2位圖不渲染
- 2. grails渲染視圖不渲染並且沒有給出任何錯誤
- 3. 從OpenGL中的位圖渲染地形
- 4. 如何在opengl es android中直接渲染VR渲染?
- 5. 在Play中沒有任何控制器的渲染視圖
- 6. 視圖沒有正確渲染
- 7. ui路由器沒有渲染視圖
- 8. RenderBody沒有渲染我的視圖
- 9. Angular2路由器沒有渲染視圖
- 10. React和Redux沒有渲染視圖
- 11. 視圖沒有得到渲染 - 離子
- 12. Plastiq沒有更新視圖,直到第二次渲染
- 13. 渲染視圖
- 14. OpenGL渲染到立方圖
- 15. 如何將SlimDX場景直接渲染到GDI位圖
- 16. Html沒有渲染圖表
- 17. 沒有existant $(this.el)骨幹視圖,而渲染子視圖這裏
- 18. 視圖渲染4.2
- 19. Spine.js渲染視圖
- 20. ZF2視圖渲染
- 21. 渲染Jbuilder視圖
- 22. 渲染在視圖
- 23. 雙渲染視圖
- 24. 渲染任務中的局部視圖
- 25. Node.js如何渲染視圖?
- 26. 如何渲染視圖
- 27. 如何渲染包含Core Animation圖層的視圖到位圖?
- 28. 如何使用OpenGL ES渲染圖像?
- 29. 如何渲染只有一個視圖?
- 30. OpenGL根本沒有渲染任何東西
[在後臺運行Android OpenGL作爲應用程序的呈現資源?]的可能的副本(http://stackoverflow.com/questions/6524212/run-android-opengl-in-background-as-rendering-resource-for-應用程序) – 2017-02-16 10:19:23