• gpu与image的来回转换


    src\third_party\skia\docs\examples

    在 gpu 上绘制,然后用surface的snapshot获取 图片; 

    skimage也可以直接从texture

    // Copyright 2019 Google LLC.
    // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
    #include "tools/fiddle/examples.h"
    // HASH=06aeb3cf63ffccf7b49fe556e5def351
    REG_FIDDLE(Image_MakeBackendTextureFromSkImage, 256, 64, false, 0) {
    static sk_sp<SkImage> create_gpu_image(GrRecordingContext* rContext) {
        // rContext 是个gpu绘制上下文
        const SkImageInfo info = SkImageInfo::MakeN32(20, 20, kOpaque_SkAlphaType);
        auto surface(SkSurface::MakeRenderTarget(rContext, SkBudgeted::kNo, info));
        
        //通过canvas绘制,绘制在gpu进行
        SkCanvas* canvas = surface->getCanvas();
        canvas->clear(SK_ColorWHITE);
        SkPaint paint;
        paint.setColor(SK_ColorBLACK);
        canvas->drawRect(SkRect::MakeXYWH(5, 5, 10, 10), paint);
        //获取刚才绘制的图片
        return surface->makeImageSnapshot();
    }
    
    void draw(SkCanvas* canvas) {
        auto dContext = GrAsDirectContext(canvas->recordingContext());
        if (!dContext) {
            return;
        }
        sk_sp<SkImage> backEndImage = create_gpu_image(dContext);
        canvas->drawImage(backEndImage, 0, 0);
        
        //将图片绘制到gpu的texture上
        GrBackendTexture texture;
        SkImage::BackendTextureReleaseProc proc;
        if (!SkImage::MakeBackendTextureFromSkImage(dContext, std::move(backEndImage),
                                                    &texture, &proc)) {
            return;
        }
        //从texture绘制获取成skimage图片。
        sk_sp<SkImage> i2 = SkImage::MakeFromTexture(dContext, texture, kTopLeft_GrSurfaceOrigin,
                                                     kN32_SkColorType, kOpaque_SkAlphaType, nullptr);
        canvas->drawImage(i2, 30, 30);
    }
    }  // END FIDDLE
  • 相关阅读:
    06.数组模拟栈-简易计算器
    05.单向环形链表应用 -- 约瑟夫环
    02.数组模拟环形队列
    01.稀疏矩阵与二维数组相互转化
    大数字相乘
    13.打包发布
    悦苗园公益活动
    程序猿打招自己的电子图书馆
    【技能】提高网站可用性
    【微信技能】如何通过微信号知道对方微信的二维码
  • 原文地址:https://www.cnblogs.com/bigben0123/p/16662740.html
Copyright © 2020-2023  润新知