在android上使用GLES20.glReadPixels时,它返回的数据与生动预览不完全相同

 手机用户2502939177 发布于 2023-02-10 11:21

我试图在这个页面上使用Android GPUImage https://github.com/Cyber​​Agent/android-gpuimage对视频做一些实时的过滤工作,我使用glReadPixels()来获取GPU处理过的数据并添加了过滤器,然后我使用返回的数据创建了一个位图,最后将其压缩为jpeg图片.这个过程运行正常,但jpeg与预览不一样,它只是显示预览的底部,但它的大小是正确的,我已经搜索了很长时间但仍然没有线索,所以可以你们给我一些建议,任何建议将不胜感激.

我使用glReadPixels的代码是这样的:

public static Bitmap SavePixels(int x, int y, int w, int h){ 
    int b[]=new int[w*(y+h)];
    int bt[]=new int[w*h];
    IntBuffer ib = IntBuffer.wrap(b);
    ib.position(0);
    GLES20.glReadPixels(0, 0, w, h, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ib);

        for(int i=0, k=0; i>16)&0xff;
                  int pr=(pix<<16)&0x00ff0000;
                  int pix1=(pix&0xff00ff00) | pr | pb;
                  bt[(h-k-1)*w+j]=pix1;
             }
        }

        Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
        return sb;
 }

我在onDraw函数中的GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP,0,4)之后调用了这个函数.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有