首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏字节流动

    OpenGL ES 文字渲染进阶--渲染文字

    旧文 OpenGL ES 文字渲染方式有几种? 一文中分别介绍了 OpenGL 利用 Canvas 和 FreeType 绘制文字的方法。 无论采用哪种方式进行渲染,本质上原理都是纹理贴图:将带有文字的图像上传到纹理,然后进行贴图。 ? 渲染文字体 利用 Canvas 绘制中文字体和绘制其他字体在操作方式上没有区别,但是使用 FreeType 绘制中文字体,在编码方式、加载方式以及字体属性上面会有一些坑要踩,这里本人已经踩过,将在本文中分享给各位读者大人 使用 FreeType 渲染中文和英文字符在流程上基本一致,都是根据字符的编码值来加载位图,然后上传纹理。 6 = 64) } glBindVertexArray(0); glBindTexture(GL_TEXTURE_2D, 0); } 加载和渲染文字体: static const

    2.4K20发布于 2021-07-16
  • 来自专栏字节流动

    OpenGL ES 文字渲染

    [OpenGL ES 文字渲染方式有几种?] 在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。 实际上 OpenGL 并没有定义渲染文字的方式,所以我们最能想到的办法是:将带有文字的图像上传到纹理,然后进行纹理贴图。 本文分别介绍下在应用层和 C++ 层常用的文字渲染方式。 [OpenGL ES 文字渲染] 基于 Canvas 绘制生成 Bitmap 在应用层实现文字渲染主要是利用 Canvas 将文本绘制成 Bitmap ,然后生成一张小图,然后在渲染的时候进行贴图。 FreeType FreeType 是一个基于 C 语言实现的用于文字渲染的开源库,它小巧、高效、高度可定制,主要用于加载字体并将其渲染到位图,支持多种字体的相关操作。 渲染文字使用的 shader : //vertex shader #version 300 es layout(location = 0) in vec4 a_position;// <vec2 pos

    2.3K70发布于 2021-06-24
  • 来自专栏字节流动

    OpenGL ES 文字渲染进阶--渲染文字

    [OpenGL ES 文字渲染进阶--渲染文字体] 旧文 OpenGL ES 文字渲染方式有几种? 一文中分别介绍了 OpenGL 利用 Canvas 和 FreeType 绘制文字的方法。 无论采用哪种方式进行渲染,本质上原理都是纹理贴图:将带有文字的图像上传到纹理,然后进行贴图。 [渲染文字体] 利用 Canvas 绘制中文字体和绘制其他字体在操作方式上没有区别,但是使用 FreeType 绘制中文字体,在编码方式、加载方式以及字体属性上面会有一些坑要踩,这里本人已经踩过,将在本文中分享给各位读者大人 使用 FreeType 渲染中文和英文字符在流程上基本一致,都是根据字符的编码值来加载位图,然后上传纹理。 6 = 64) } glBindVertexArray(0); glBindTexture(GL_TEXTURE_2D, 0); } 加载和渲染文字体: static const wchar_t

    1.9K20发布于 2021-07-05
  • 来自专栏移动端动态化技术

    Flutter文字渲染模块总结(一)

    1.文字渲染概述 1.1 字体存储 ​ 把文字渲染到屏幕上主要是通过加载字体获得字形(Glyph)纹理,然后通过字体测量计算出字体左上角的位置和宽高,然后再把纹理贴到2D方块中。 这样字形的解析和渲染就会非常耗时,一般都会通过缓存机制进行优化, 比如Skia的文字绘制有两种方式: 文字绘制过程需要将文字解析为路径,然后绘制路径,缓存路径 将文字解析为Mask(32*32的A8图片 比如渲染如下文字 它的方块信息如下所示: 2. Flutter文字渲染模块 Flutter文字渲染相关的模块比较核心的主要有包含两种种类型: 支持混排的富文本RichText 支持编辑的EditableText 2.1 RichText组件 RichText 先看一下其核心模块排版和渲染过程,不过因为EditableText不支持富文本的方式排版,所以其排版过程只是单纯的文字版本,所以只需要关注渲染这一块,当然还有交互。

    1.7K20发布于 2021-11-12
  • 来自专栏字节流动

    OpenGL ES 文字渲染方式有几种?

    实际上 OpenGL 并没有定义渲染文字的方式,所以我们最能想到的办法是:将带有文字的图像上传到纹理,然后进行纹理贴图。 本文分别介绍下在应用层和 C++ 层常用的文字渲染方式。 ? OpenGL ES 文字渲染 ? 基于 Canvas 绘制生成 Bitmap 在应用层实现文字渲染主要是利用 Canvas 将文本绘制成 Bitmap ,然后生成一张小图,然后在渲染的时候进行贴图。 FreeType 是一个基于 C 语言实现的用于文字渲染的开源库,它小巧、高效、高度可定制,主要用于加载字体并将其渲染到位图,支持多种字体的相关操作。 使用 FreeType 渲染文字 FreeType 的使用 引入头文件: #include "ft2build.h" #include <freetype/ftglyph.h> 然后要加载一个字体,

    2.8K31发布于 2021-07-16
  • 来自专栏个人博客

    matplotlib中文字渲染 - plus studio

    matplotlib中文字渲染 matplotlib 在画图例的时候不可避免的需要使用中文字体,但是有的时候电脑自带的字体不能渲染中文,这就需要我们自己解决字体问题。 首先用一个代码看一下系统里的字体哪些可以正常渲染文字体 import matplotlib.font_manager as font_manager import matplotlib.pyplot FontProperties(fname='/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf') # 绘制散点图 plt.scatter([1,2,3 以下是一些中文字体的官方下载页面或者信誉良好的资源: 思源宋体(Source Han Serif): 官方GitHub页面: Adobe Fonts 选择您需要的语言子集,例如简体中文(SC),并下载相应的

    65010编辑于 2024-02-29
  • 来自专栏Node开发

    图片文字识别(2)

    上篇文章主要对百度AI文字识别接口最基础的通用文字以及手写文字图片进行了接入识别,本篇文章我们来接着看几个实用性比较强的文字识别接口。百度AI接口对接挺容易的,签名加密都没有涉及到。 (图片来源于百度,假数据) 可以看到我们传入图片url,最后可以转化为BASE64编码再调用接口可以成功解析到用户身份证文字信息。 2.如果图片需要进行保存,可以前端将图片转化为binary格式,后端先将图 片上传到服务器或者直接传到对象存储oss,然后获得图片路径,使用现 在的方法加载缓冲数据,进行BASE64编码最后调用接口解析图片文字信息 表格文字识别(内含两个接口) 自动识别表格线及表格内容,结构化输出表头、表尾及每个单元格的文字内容。 本接口为异步接口,分为两个API:提交请求接口、获取结果接口。下面分别描述两个接口的使用方法。 但是我这里就不准备一一介绍了,有兴趣可以自行查看百度AI文字识别文档: https://ai.baidu.com/docs#/OCR-API/87932804 其实业务开发过程如果适当的引入人脸识别,文字识别等

    54.4K30发布于 2019-07-01
  • 来自专栏深度学习|机器学习|歌声合成|语音合成

    MikuMikuDance:渲染扩展《2

    文章目录 扩展1:mmd-for-unity 动作保存 扩展2:ray-mmd 物理渲染 额外扩展 扩展1:mmd-for-unity github MikuMikuDance可以处理3

    76410发布于 2021-01-14
  • 来自专栏LET

    渲染方程(2):VRE

    因此,从线性代数上,如上的积分存在这样的线性关系: 这里,揭示了光路贡献的来源:红色的自发光(从光源直接打到相机,光路长度1),绿色是直接光照(光源打到物体表面然后直接打到相机,光路长度2),橙色则是间接光照 (经过2+反弹后打到相机,光路长度3+)。 通常,rasterization渲染管线能够高效且简单的考虑前两部分的贡献,而光线追踪可以做到考虑所有光路的贡献:global illumination = direct illumination + 这里,我们记Transmittance: 令 , , , 表示 之间的变化距离,等式1两边乘以 : 已知: (2)式代入(3)式: 对于红色部分,我们可得: 这样,红色和蓝色部分抵消后 : 至此,我们推导出了渲染方程的一般解,基于这个公式,我们就可以获取任意场景下物理正确的渲染解。

    1.3K20发布于 2021-10-18
  • 来自专栏进击的多媒体开发

    Flutter 2 渲染原理和如何实现视频渲染

    声网Agora跨平台开发工程师卢旭辉带来了《Flutter2 渲染原理和如何实现视频渲染》的主题分享,本文是对演讲内容的整理。 本次分享主要包括 3 个部分: Flutter2 概览。 Flutter2 视频渲染插件的实践。 Flutter2 渲染原理(源码)。 另一种则是基于 CanvasKit 的渲染模式,它会下载 2MB 的 wasm 文件以调用 Skia 渲染引擎,Widget 渲染都是通过该引擎来绘制的。 > 标签指向了 "Basic" 的文本,这说明该模式下文本的渲染使用的是 Canvas,那为什么要使用 Canvas 绘制文本而不使用浏览器默认的文字渲染能力呢? 那是因为要抹除平台渲染表现的差异,尤其是文字的换行处理等,Flutter 内置了文字排版的引擎,会基于该引擎进行渲染

    2.5K20发布于 2021-11-09
  • 来自专栏大史住在大前端

    高性能Web动画和渲染原理系列(2)——渲染管线和CPU渲染

    旧软件渲染 现代浏览器多采用软硬件混合渲染的方式来处理,软件渲染的方式通常也被成为“旧软件渲染”(与之相对应的是硬件加速渲染),“旧”只是出现时间比较早,并不表示它已经被硬件渲染所取代。 最初的网页并不是作为完整的应用存在的,而只是用来做一些信息展示,二维渲染的场景居多(因为页面上大多都是基于“盒模型”的矩形区域和文字包围盒的计算和绘制),这时使用CPU渲染的性能并不低,“旧软件渲染”通常使用底层的二维图形绘制库 ,你可以借助HTML Canvas 2D API来类比理解,在canvas画板上实现的二维动画,即使在逐帧动画中进行覆盖式的全画布重绘,也能够保持较高的帧率;对3D图形学有一定了解的小伙伴都知道,3D渲染引擎只支持点 、线和三角形的绘制,所以一个矩形就至少需要2个三角形来表示(当然也可是多个),直观感觉上就是一种“杀鸡用牛刀”的体验,GPU的算力虽然很牛逼,但通常内存空间非常有限,所以最好只在必要时有节制地使用GPU 从canvas体会分层优势 Webkit底层的2D渲染使用Skia库,它是类似于Canvas API的二维图形绘制库,为了方便理解软件渲染的优势,下面通过Canvas API来看看分层到底带来了哪些变化

    1.9K30发布于 2019-10-21
  • 来自专栏代码编写世界

    《实时渲染》第2章-图形渲染管线-2.5像素处理

    实时渲染 2. 图形渲染管线 2.5 像素处理 这个阶段是所有先前阶段组合的结果,并且已经找到了在三角形或其他图元内被考虑的所有像素。像素处理阶段分为像素着色和合并,如图2.8右侧所示。 这意味着当一个图元被渲染到某个像素时,该图元在该像素上的z值被计算并与同一像素的z缓冲区的内容进行比较。 透明图元必须在所有不透明基元之后渲染,并以从后到前的顺序呈现,或使用单独的与顺序无关的算法(第5.5节)。透明度是基本z缓冲区算法的主要弱点之一。 模板缓冲区是一个离屏缓冲区,用于记录渲染图元的位置。它通常包含每像素 8 位。可以使用各种函数将图元渲染到模板缓冲区中,然后可以使用缓冲区的内容来控制渲染到颜色缓冲区和z缓冲区中。 这意味着场景的渲染发生在屏幕外的后台缓冲区中。在后台缓冲区中渲染场景后,后台缓冲区的内容将与之前显示在屏幕上的前台缓冲区的内容交换。交换通常发生在垂直重描期间,这是安全的时候。

    8910编辑于 2026-03-10
  • 来自专栏代码编写世界

    《实时渲染》第2章-图形渲染管线-2.4光栅化

    实时渲染 2. 图形渲染管线 2.4 光栅化 顶点及其关联的着色数据(全部来自几何处理阶段)在进行变换和投影后,下一阶段的目标是找到所有像素(图片元素的缩写),这些像素位于要渲染的图元内部,例如三角形。

    9510编辑于 2026-03-10
  • 来自专栏代码编写世界

    《实时渲染》第2章-图形渲染管线-2.6管线综述

    实时渲染 2. 图形渲染管线 2.6 管线综述 点、线和三角形是构建模型或对象的渲染图元。假设该应用程序是一个交互式计算机辅助设计 (CAD) 应用程序,并且用户正在检查华夫饼制造商的设计。 在这里,我们将在整个图形渲染管线中遵循这个模型,包括四个主要阶段:应用程序、几何、光栅化和像素处理。场景以透视图渲染到屏幕上的窗口中。 2.6.5 总结 这条管线源于数十年针对实时渲染应用程序的API和图形硬件演变。需要注意的是,这并不是唯一可能的渲染管道;离线渲染管道经历了不同的进化路径。 这是一个很好的资源,可以了解实现渲染管道的一些微妙之处,解释关键算法,例如剪辑和透视插值。 我们这本书的网站realtimerendering.com提供了指向各种管线图、渲染引擎实现等的链接。

    11010编辑于 2026-03-10
  • 来自专栏代码编写世界

    《实时渲染》第2章-图形渲染管线-2.3几何处理

    实时渲染 2. 图形渲染管线 2.3 几何处理 GPU上的几何处理阶段负责大多数每个三角形和每个顶点的操作。该阶段进一步分为以下功能阶段:顶点着色、投影、裁剪和屏幕映射(如图2.3)。 图2.3. 要生成逼真的场景,仅渲染对象的形状和位置是不够的,还必须对它们的外观进行建模。该描述包括每个物体的材质,以及任何光源照射在物体上的效果。 完全在视图体积之外的基元不会被进一步传递,因为它们没有被渲染。部分位于视图体内部的图元需要裁剪。 假设场景应该被渲染到一个最小位置在 (x_1,y_1) ,最大位置在 (x_2 ,y_2) 处的窗口(其中 x_1 < x_2 和 y_1 < y_2 )。屏幕映射先是平移,然后是缩放操作。 z坐标(OpenGL的 [−1,+1] 和DirectX的 [0,1] )也被映射到 [z_1,z_2] ,其中 z_1=0 和 z_2=1 作为默认值。但是,这些可以通过API进行更改。

    8510编辑于 2026-03-10
  • 来自专栏跟牛老师一起学WEBGIS

    openlayers2渐变色渲染

    概述 在前文中,讲到了oL2中唯一值渲染的实现方式,在本文讲述ol2中渐变色渲染的实现方式。 效果 ? 代码 <! property: "vocation", // the "foo" feature attribute value: 2 OpenLayers.Filter.Comparison.BETWEEN, property: "vocation", lowerBoundary: 2,

    2.8K20发布于 2018-10-23
  • 来自专栏浴巾的学习分享贴

    item2更改主体文字颜色

    由于远程连接的Linux服务器配置好oh-my-zsh之后,本地的现实也会改变,但是更改主体文字颜色等操作比较繁琐,因此通过更改本地终端,此处是item2,来更改本地的主体文字颜色,更简单 打开设置中的颜色设置 此处foreground(前景)即为主体文字颜色,默认为白色 更改为与右侧表中ansi color的bright green一致

    1.9K10编辑于 2023-12-09
  • 来自专栏代码编写世界

    2章-图形渲染管线-2.0

    2. 图形渲染管线 链条的坚固程度取决于它最薄弱的环节。 --匿名者 本章介绍实时图形渲染的核心组件,即图形渲染管线,也简称为“管线”。 管线的主要功能是通过给定虚拟相机、三维对象、光源等,生成或渲染二维图像。因此,渲染管线是实时渲染的基础工具。使用管线的过程如图2.1所示。 仅渲染视图体积内的图元。对于透视渲染的图像(如这里的情况),视图体积是一个平截头体(frustum,复数为frusta),即具有矩形底部的截棱锥。右图显示了相机“看到”的内容。 请注意,左侧图像中的红色甜甜圈形状不在右侧的渲染中,因为它位于视锥体之外。此外,左图中扭曲的蓝色棱镜被剪裁在平截头体的顶平面上。 我们将解释渲染管线的不同阶段,重点是功能而不是实现。

    85630编辑于 2022-01-04
  • 来自专栏跟牛老师一起学WEBGIS

    Openlayers2唯一值渲染

    概述 本文讲述Openlayers2中实现唯一值渲染。 效果 源代码 <! fillColor: "#ffffff", strokeColor: "#00ffff", graphicZIndex: 2, }) }); var lookup = { "230000":{fillColor: "#386d2c

    1K20发布于 2018-10-23
  • 来自专栏技术工具的探究

    浏览器渲染(线程视角2

    上篇文章介绍了渲染进程主线程上DOM构建的过程,此篇文章将介绍样式计算、布局树、分层树、绘制、合成、显示 image.png 样式计算(Recalculate Style) 样式计算主要目的是计算出 ,先来看下如下概念 帧、帧率:渲染流水线生成一张图片为一帧,每秒渲染帧数称为帧率,如果每秒帧率为60,则为60FPS, 显卡:显卡的职责就是合成新的图像,并将图像保存在后缓冲区,显卡中维护了两块区域,前缓冲区和后缓冲区 后缓冲区:一旦显卡把合成的图像保存到后缓冲区,后缓冲区和前缓冲区交换,当滚动或缩放时,渲染引擎通过渲染流水线产生图片并发送到显卡的后缓冲区,显示器刷出图像,显卡更新的频率和显示器刷新频率是一致的,但复杂场景 ,会出现显卡处理一张图片的速度变慢,造成视觉卡顿 总结 本节主要介绍渲染流程样式计算、布局、分层、绘制、合成及最终显示输出 样式计算:css文件主要来源于link引入,style插入,和行内style ,渲染进程维护了栅格化线程池,来完成图块到位图的转换,在栅格化过程中,还用到了GPU进程来加速位图的生成,使用GPU生成位图保存在GPU内存中,这个过程为快速栅格化的过程。

    2.4K70发布于 2020-05-24
领券