[英]Use OpenGL to draw shader to a stream?
我正在使用将OpenGL 2.0与Renderer,屏幕外GLSurfaceView和一些着色器脚本(* .fsh和* .vsh)配合使用的照片应用程序。
从Assets文件夹加载着色器脚本,准备GL曲面和上下文等后,我们最终调用GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4);
而且效果很好,并生成带有效果的位图。
当然,问题是内存限制和任何足够大的位图(无论设备如何,对于旧的Gingerbread而言都不大,而对于Nexus 10而言则非常大),它将产生和OutOfMemoryException。
我对OpenGL不太了解,我知道处理大量数据的方式是使用流,因此不必将其全部保存在内存中。
因此,问题是,是否有一种方法可以通过流而不是内存中的位图来应用openGl着色器/渲染器? 如果是,是否有指向链接或基本过程的指针?
不完全确定Stream
含义,但这是另一种解决方案。 将渲染分成多个通道。 例如,如果您具有512x512纹理和相应的纹理四边形,但由于内存限制而只能上传256x256,请执行以下操作:
请注意,以上示例假设512x512纹理和屏幕尺寸。 无论如何,我想您会明白的。
显然,这是通常的内存/性能折衷。您可以通过使用更多带宽进行传输和执行更多渲染来规避内存限制。
注意:我是台式机GL的家伙,我不太确定如何在GPU和其余的内存之间分配内存,或者甚至没有专用的VRAM。 我认为您有有限的可用GL资源,甚至比整个系统内存还小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.