我正在开发一个纯2D项目,其中屏幕由CPU渲染,我想将其显示为纹理,但我不想为每个帧上传整个图像。我不知道哪些部分被改变了,所以我认为整个图像无效。
我需要进行一些后期处理(添加另一层有一些blits),我早期的测试显示它可能是纯粹用CPU做的性能问题,这就是我需要GPU加速的原因(2D会更好,但不常见/便携式在这些日子......)。
我的目标平台是一个嵌入式系统(ARM),其中GPU和CPU共享内存,因此理论上我可以在没有任何副本的情况下完成此操作。所选平台支持OpenGL 2.1和OpenGL ES 3.0。
我知道缓冲区对象可以通过glMapBufferRange()进行映射。我照顾了下面的可能性:
我错过了什么吗? ES 3.0中没有办法与包含大量数据的GPU共享一个缓冲区,我可以从CPU写入并从片段着色器读取数据?
您可以使用GLES20.glTexSubImage2D
部分更改纹理。