如题,GLSurfaceView 中怎么样刷新一张2D bitmap?
可不可以将这个bitmap作为纹理贴到一个方块面上显示,然后刷新这个纹理?
bow~~

解决方案 »

  1.   

    Canvas canvas = holder.lockCanvas(null);//获取画布   
    Paint mPaint = new Paint();   
    mPaint.setColor(Color.BLUE);            
    canvas.drawRect(new RectF(40,60,80,80), mPaint);   
    holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像应该是extend自surfaceview吧,对于2D图像,选Rect就可刷新
    你通过这种方式试一下
      

  2.   

    Canvas canvas = mHolder.lockCanvas();
    Matrix matrix = new Matrix();
    PointF point = new PointF(); if(mScales >= 0)
    {
    float scaleWidth = ((float)(mView.getWidth() - 2) / (float)mWidth);
    float scaleHeight = ((float)(mView.getHeight() - 2) / (float)mHeight);

    float DignitalscaleWidth = scaleWidth * mScales;
    float DignitalscaleHeight = scaleHeight * mScales;

    float TranslateX = (mTranslate.x)/(DignitalscaleWidth);
    float TranslateY = (mTranslate.y)/(DignitalscaleHeight);

    if(DignitalscaleWidth > scaleWidth)
    {
    point.x = (DignitalscaleWidth - scaleWidth)*(float)(mWidth)/(2*DignitalscaleWidth) + TranslateX;
    point.y = (DignitalscaleHeight - scaleHeight)*(float)(mHeight)/(2*DignitalscaleHeight) + TranslateY;
    }
    else
    {
    point.x = (scaleWidth - DignitalscaleWidth)*(float)(mWidth)/(2*DignitalscaleWidth) + TranslateX;
    point.y = (scaleHeight - DignitalscaleHeight)*(float)(mHeight)/(2*DignitalscaleHeight) + TranslateY;
    }


    matrix.postScale(DignitalscaleWidth, DignitalscaleHeight, point.x, point.y);
    }

    canvas.drawColor(Color.BLACK);

    canvas.drawBitmap(VideoBlt, matrix, null);
    mHolder.unlockCanvasAndPost(canvas);
    VideoBlt 就是bitmap 但是一定要是RGB565的
      

  3.   

    "选Rect就可刷新" 这个能说的具体点吗?谢谢。
      

  4.   


    这代码是在缩放图片吧?
    OpenGL中怎么刷新图片呢?
      

  5.   

    楼主这个问题得到解决了吗?我现在也在做一个截图功能,遇到同样的问题了 。就是采用surfaceView 与Mediaplay 结合进行视频播放,截播放过程中的图片。各位大侠有没有好的解决办法呢。
      

  6.   

    surfaceView中截图:
    1.可以让sufaceview 的draw函数将图片画到一张事先准备好的截图bitmap上。
    2.然后用flag去控制显示那一副图片。目前我是这样来切换对话框和游戏界面的。