直接基于GLSurfaceView,
且基于这些事实:
1. 一个activity只能有一个GLSurfaceView,
2. 一个GLSurfaceView内有一个UI主线程和一个GL渲染线程。我现在有个需求:
想基于OpenGL做一个service:负责接收顶点数据,OpenGL渲染的内容并不直接显示,而是通过以bitmap的形式传给UI线程显示。

解决方案 »

  1.   

    你说的就是离屏渲染技术,可以用eglCreatePBufferSurface创建一个缓存,渲染到缓存中,然后调用glReadPixels读出来
      

  2.   

    hi,首先感谢兄弟的回复。
    是的,pbuffer 实现离线渲染我在windows下实现过,android平台不太熟悉。
    创建pbuffer 是否依赖于android的Surface或者view?能在单独的线程中创建pbuffer吗?
    谢谢回复~
      

  3.   

    可以使用两个方法void update(float deltaTime),void present(float deltaTime)
    update负责图形背后的事件处理,present负责渲染画面
    实现GLSurfaceView接口会有一个方法是onDrawFrame()记不太清是什么方法了
    在这个方法先记录该类所处状态
    当该类处于正在工作状态,就在while循环里调用update(deltaTime),present(deltaTime)方法
    并利用系统时间System.NanoTime()更新deltaTime
      

  4.   

    这个我没有试过,但我估计是依赖于surface的,即使如此,你也可以先在渲染线程中渲染,把结果读到一个缓存中,再把这个缓存发送给另一个UI线程