简体   繁体   English

使用opengl v2 android截屏

[英]Taking screenshot using opengl v2 android

I am trying to take screenshot of my screen with opengl.And i have been through many resources but i cant understand how and where to add this given support code and also how to call it in my button click function.Can anyone help me with that... 我正在尝试使用opengl截屏,而且我已经浏览了很多资源,但是我不明白如何在何处添加此给定的支持代码以及如何在按钮单击功能中调用它。 ...

if(screenshot){                     
    int screenshotSize = width * height;
    ByteBuffer bb = ByteBuffer.allocateDirect(screenshotSize * 4);
    bb.order(ByteOrder.nativeOrder());
    gl.glReadPixels(0, 0, width, height, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, bb);
    int pixelsBuffer[] = new int[screenshotSize];
    bb.asIntBuffer().get(pixelsBuffer);
    bb = null;
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    bitmap.setPixels(pixelsBuffer, screenshotSize-width, -width, 0, 0, width, height);
    pixelsBuffer = null;

    short sBuffer[] = new short[screenshotSize];
    ShortBuffer sb = ShortBuffer.wrap(sBuffer);
    bitmap.copyPixelsToBuffer(sb);

    //Making created bitmap (from OpenGL points) compatible with Android bitmap
    for (int i = 0; i < screenshotSize; ++i) {                  
        short v = sBuffer[i];
        sBuffer[i] = (short) (((v&0x1f) << 11) | (v&0x7e0) | ((v&0xf800) >> 11));
    }
    sb.rewind();
    bitmap.copyPixelsFromBuffer(sb);
    lastScreenshot = bitmap;

    screenshot = false;
}

you can use overlay like this: 您可以像这样使用叠加层:

    public static Bitmap overlay(Bitmap bmp1,bmp2 //you can add more you if  want) {
    bmp1 = Bitmapfromopengl;
    bmp2 = Bitmap2;

    bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1, new Matrix(), null);
    canvas.drawBitmap(bmp2, 0, 0, null);
    return bmOverlay;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM